日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

10.15 iptables filter表小案例10.16/10.17/10.18 iptables nat表应用

發布時間:2024/1/17 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 10.15 iptables filter表小案例10.16/10.17/10.18 iptables nat表应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

10.15 iptables filter表小案例

iptables 命令、語法總結

iptables-nvL //查看iptables規則 iptables -F //清空規則 service iptables save //保存規則,保存在/etc/sysconfig/iptables,重啟的時候會調用這里面的規則 iptables -t nat //-t指定表,如果不用-t,默認對filter 執行 iptables -Z //可以把計數器清零iptables -I/-A/-D INPUT -s 1.1.1.1 -j DROP iptables -I INPUT -s 192.168.1.0/24 -ieth0 -j ACCEPT

-A 和 -I 的區別

  • -A 是在規則列表最下方增加
  • -I 是在規則列表最上方增加
  • 誰在規則列表最上,誰就最先匹配、加載
  • 命令語法

    iptables -A INPUT -s 192.168.188.1 -p tcp--sport 1234 -d 192.168.188.128 --dport80 -j DROP iptables -I [鏈的名字] -s [源IP] -p [指定協議] --sport [指定源端口] -d [指定目標IP] --dport [指定目標端口] -j [指定行為]
    [鏈的名字]
  • INPUT //進來的包
  • OUTPUT //出去的包
  • FORWARD //比較少用
  • [指定協議]
  • tcp
  • udp
  • icmp
  • [指定行為]
  • DROP // 丟棄
  • ACCEPT // 放行
  • REJECT // 拒絕
  • iptables -nvL --line-numbers //查看規則的序號 iptables -D INPUT 1 //針對序號刪除 iptables -P INPUT DROP //指定鏈的默認策略,最好不要直接操作,很有可能導致遠程終端直接中斷

    案例

    需求:把80端口、22端口、21端口放行,22端口指定IP段內的IP才能進行訪問

    使用腳本實現
    #! /bin/bash ipt="/usr/sbin/iptables" //定義了環境變量 ipt $ipt -F //清除filter表的規則 $ipt -P INPUT DROP //定義INPUT鏈的默認策略為全部丟掉 $ipt -P OUTPUT ACCEPT //定義OUTPUT鏈的默認策略為全部放行 $ipt -P FORWARD ACCEPT //定義了FORWARD鏈的默認策略為全部放行 $ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT //針對RELATED,ESTABLISHED這兩狀態進行放行 $ipt -A INPUT -s 192.168.133.0/24 -p tcp --dport 22 -j ACCEPT //這個網段的數據包放行 $ipt -A INPUT -p tcp --dport 80 -j ACCEPT //80端口放行 $ipt -A INPUT -p tcp --dport 21 -j ACCEPT //21端口放行
    腳本解釋:

    定義環境變量的理由,因為正確使用命令是用絕對路徑進行使用,這樣才不會因為環境變量的改動導致無法使用命令 兩種狀態:

  • RELATED 有關系的端口的,是一個邊緣的狀態,客戶端和服務端建立連接之后,還有繼續有一些額外的鏈接出來,這個時候就變成這個狀態
  • ESTABLISHED 已建立的連接,保持連接 僅僅是 ESTABLISHED,很有可能其他的通信被禁掉,因為默認策略是DROP,所以必須加上這個狀態,加這個狀態的目的就是為了讓通信更加順暢
  • 使用腳本的原因

    因為逐個執行命令,會導致遠程終端斷開連接,如果使用腳本將會在瞬間執行好所有的命令,將不再產生端口終端的狀態

    查看新增規則狀況
    [root@aminglinux-02 ~]# !sh sh /usr/local/sbin/iptables.sh [root@aminglinux-02 ~]# iptables -nvL Chain INPUT (policy DROP 0 packets, 0 bytes)pkts bytes target prot opt in out source destination26 1888 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED0 0 ACCEPT tcp -- * * 192.168.133.0/24 0.0.0.0/0 tcp dpt:220 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:800 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:21

    licmp示例:

    禁止ping本機

    iptables -I INPUT -p icmp --icmp -type 8 -j DROP

    10.16/10.17/10.18 iptables nat表應用

    準備工作:

    設備情況: A機器兩塊網卡ens33(192.168.133.130)、ens37(192.168.100.1),ens33可以上外網,ens37僅僅是內部網絡,B機器只有ens37(192.168.100.101),和A機器ens37可以通信互聯。

    • 環境準備
    一、克隆一個虛擬機

    ==PS:克隆好的虛擬機需要修改 hostname 以便區分==

    二、對兩臺(aminglinux-02、aminglinux-02的克隆)虛擬機增加一個網卡,網卡選項選擇為LAN區段

    PS:需要同時對兩臺虛擬機都進行這個操作,這個操作是目的,為的就是讓兩臺虛擬機都處于同一個虛擬交換機中(LAN區段,就類似一個虛擬交換機);克隆好虛擬機以后記得修改hostname 不然也會出錯

    需要注意的一點,因為實驗環境,A機器是可以內網、外網同時訪問,所以A機器必須是要有兩個網卡;B機器可以只有一個網卡,所以在配置B機器的時候只需要把B機器的網絡適配器網絡連接調整為LAN區段也是可以的(但這樣做需要改動進入系統內調整網卡配置),但是為了方便,直接重復創建一個網卡,改動網絡連接為LAN區段即可

    三、配置兩臺機器的LAN區段IP

    A機器: 因為A機器配置能訪問外網的網卡,所以可以直接通過終端進行訪問 配置LAN網卡

    [root@aminglinux-02 ~]# ifconfig ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.133.131 netmask 255.255.255.0 broadcast 192.168.133.255inet6 fe80::6e6a:61ff:f17c:5942 prefixlen 64 scopeid 0x20<link>ether 00:0c:29:c4:13:b8 txqueuelen 1000 (Ethernet)RX packets 2908766 bytes 284945595 (271.7 MiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 7085 bytes 1858943 (1.7 MiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0ens34: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet6 fe80::44fe:e11f:f99c:4de1 prefixlen 64 scopeid 0x20<link>ether 00:0c:29:c4:13:c2 txqueuelen 1000 (Ethernet)RX packets 0 bytes 0 (0.0 B)RX errors 0 dropped 0 overruns 0 frame 0TX packets 51 bytes 8994 (8.7 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536inet 127.0.0.1 netmask 255.0.0.0inet6 ::1 prefixlen 128 scopeid 0x10<host>loop txqueuelen 1 (Local Loopback)RX packets 68 bytes 5524 (5.3 KiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 68 bytes 5524 (5.3 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 [root@aminglinux-02 network-scripts]# ifconfig ens34 192.168.100.1/24 [root@aminglinux-02 network-scripts]# ifconfig ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.133.131 netmask 255.255.255.0 broadcast 192.168.133.255inet6 fe80::6e6a:61ff:f17c:5942 prefixlen 64 scopeid 0x20<link>ether 00:0c:29:c4:13:b8 txqueuelen 1000 (Ethernet)RX packets 2911127 bytes 285202630 (271.9 MiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 8305 bytes 2026122 (1.9 MiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0ens34: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.100.1 netmask 255.255.255.0 broadcast 192.168.100.255inet6 fe80::acc1:13e6:b0b6:33ab prefixlen 64 scopeid 0x20<link>ether 00:0c:29:c4:13:c2 txqueuelen 1000 (Ethernet)RX packets 39 bytes 8230 (8.0 KiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 81 bytes 11500 (11.2 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536inet 127.0.0.1 netmask 255.0.0.0inet6 ::1 prefixlen 128 scopeid 0x10<host>loop txqueuelen 1 (Local Loopback)RX packets 72 bytes 5864 (5.7 KiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 72 bytes 5864 (5.7 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    ifconfig 配置的網卡IP只是暫時生效,重啟以后又會失效,如果想永久生效,需要更改配置,但是網卡是新創建的并沒有網卡配置文件,需要cp原有的ens32網卡的配置文件,修改NAME、DEVICE兩個還需要修改相關的IP B機器 因為環境需要,我們只用使用一個網卡,所以需要在虛擬機上進行配置

    四、測試兩臺機器的連通狀況

    A機器pingB機器

    [root@aminglinux-02 ~]# ping 192.168.100.100 PING 192.168.100.100 (192.168.100.100) 56(84) bytes of data. 64 bytes from 192.168.100.100: icmp_seq=1 ttl=64 time=0.406 ms 64 bytes from 192.168.100.100: icmp_seq=2 ttl=64 time=0.258 ms 64 bytes from 192.168.100.100: icmp_seq=3 ttl=64 time=0.333 ms 64 bytes from 192.168.100.100: icmp_seq=4 ttl=64 time=0.333 ms 64 bytes from 192.168.100.100: icmp_seq=5 ttl=64 time=0.307 ms 64 bytes from 192.168.100.100: icmp_seq=6 ttl=64 time=0.290 ms 64 bytes from 192.168.100.100: icmp_seq=7 ttl=64 time=0.323 ms ^C --- 192.168.100.100 ping statistics --- 7 packets transmitted, 7 received, 0% packet loss, time 6004ms rtt min/avg/max/mdev = 0.258/0.321/0.406/0.045 ms [root@aminglinux-02 ~]#

    B機器pingA機器情況

    需求一

    可以讓B機器連接外網

    A機器配置
    • 打開路由轉發
    echo "1">/proc/sys/net/ipv4/ip_forward

    要想使用路由轉發,必須要修改內核文件,打開端口轉發

    [root@aminglinux-02 ~]# cat /proc/sys/net/ipv4/ip_forward 0 /proc/sys/net/ipv4/ip_forward 這個文件默認是0 表示沒有打開 [root@aminglinux-02 ~]# echo "1" > /proc/sys/net/ipv4/ip_forward [root@aminglinux-02 ~]# cat /proc/sys/net/ipv4/ip_forward 1
    • 增加一個規則
    [root@aminglinux-02 ~]# iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens32 -j MASQUERADE [root@aminglinux-02 network-scripts]# iptables -t nat -nvL Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)pkts bytes target prot opt in out source destinationChain INPUT (policy ACCEPT 0 packets, 0 bytes)pkts bytes target prot opt in out source destinationChain OUTPUT (policy ACCEPT 0 packets, 0 bytes)pkts bytes target prot opt in out source destinationChain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)pkts bytes target prot opt in out source destination1 84 MASQUERADE all -- * ens32 192.168.100.0/24 0.0.0.0/0
    B機器配置
    • 增加網關

    因為使用ifconfig命令添加的IP地址是沒有網關的,通過下圖可以看到

    測試連通情況

    ==PS:之前配置A機器的時候出了錯誤,導致一直ping不同外網,最后檢查的時候發現,設置的網卡出錯了。(因為命令也是復制PPT的,PPT里面針對設置的網卡是ens33,而我的虛擬機并沒有這個網卡)==

    需求二:

    實現遠程登錄B機器,也就是實現宿主機C,能ping通B機器

    A機器配置
    • 一、打開端口轉發
    echo "1">/proc/sys/net/ipv4/ip_forward

    因為之前A機器B機器互通,已經做過了,可以省略

    • 二、清除原有規則

    因為之前A機器B機器互通,添加有規則,先把規則清楚,不讓他影響到我們之后的操作 [root@aminglinux-02 network-scripts]# iptables -t nat -D POSTROUTING -s 192.168.100.0/24 -o ens32 -j MASQUERADE [root@aminglinux-02 network-scripts]# iptables -t nat -nvL Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination

    Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination

    Chain OUTPUT (policy ACCEPT 1 packets, 76 bytes) pkts bytes target prot opt in out source destination

    Chain POSTROUTING (policy ACCEPT 1 packets, 76 bytes) pkts bytes target prot opt in out source destination

    • 三、新增規則

    1、

    iptables -t nat -A PREROUTING -d 192.168.133.131 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22

    命令理解:將192.168.133.131 端口為1122 進來的數據轉發到 192.168.100.100端口22

    2、

    iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.133.130

    命令理解:將192.168.100.100源IP轉發到192.168.133.130

    B機器配置
    • 在B機器上增加網關
    route add default gw 192.168.100.1

    因為之前需求一的時候,做過這個操作,所以這一步也可以省略

    • 用終端連接

    做完這些操作就可以嘗試在終端上進行連接

    證明連接的就是B機器 查看一下是否能上網

    [root@aminglinux-02-kl ~]# ping www.qq.com PING www.qq.com (14.17.42.40) 56(84) bytes of data. 64 bytes from 14.17.42.40 (14.17.42.40): icmp_seq=1 ttl=127 time=23.5 ms 64 bytes from 14.17.42.40 (14.17.42.40): icmp_seq=2 ttl=127 time=23.9 ms 64 bytes from 14.17.42.40 (14.17.42.40): icmp_seq=3 ttl=127 time=23.1 ms ^C --- www.qq.com ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2004ms rtt min/avg/max/mdev = 23.187/23.574/23.945/0.309 ms

    上網也是正常的

    經過前面的操作,實現了C機器連接A機器,同時還能上網,完成了需求

    轉載于:https://my.oschina.net/nova12315/blog/1649575

    總結

    以上是生活随笔為你收集整理的10.15 iptables filter表小案例10.16/10.17/10.18 iptables nat表应用的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。