首頁 > 軟體

CentOS裡iptables的NAT

2020-06-16 17:56:58

CentOS 5.3配nat死活都不行,參考N多設定方法都無濟於事。
覺得是作業系統那裡出了問題,又用了CentOS 6.6,裡面有個設定的圖形引導介面,很容易就搞定了。
後來在英文網頁裡發現
echo "1" > /proc/sys/net/ipv4/ip_forward
這樣就可以了。尋找N多地方,終於知道這是在OS系統預設不轉發流量的時候,強制轉發的方法。
常態的讓系統轉發需要修改組態檔。
/etc/sysctl.conf
裡面
net.ipv4.ip_forward = 1
不起作用是因為預設值是0,disable,換成1就是enable了。
sysctl -p
更新,當然重新啟動也可以。

chkconfig iptables on
常態開啟防火牆,作為服務。

然後才是/etc/sysconfig/iptables檔案的設定。
用新增命令也是實現,這裡eth0為外,eth1為內部
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
這就是內部上外部不做限制,這對於外網絡卡的IP地址為DHCP的時候很好用。
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 172.26.1.79
這是內部網路192.168.1.0/24,到外部,替換源地址為172.26.1.79
讓外界存取內部伺服器,比如說遠端桌面
iptables -t nat PREROUTING -i eth0 -p tcp --dport 3389 -j DNAT --to-destination 192.168.1.2
-i eth0是進入的網絡卡,i是input的意思;-p tcp,協定是tcp; --dport 3389埠號是3389,--to-destination是內部伺服器的IP地址

僅僅是這些還不夠,上面是nat表,-t是指定table的,
在filter表裡也需要設定
iptables -t filter -A FORWARD -i eth0 -m state --state NEW -m tcp -p tcp -d 192.168.1.2 --dport 3389 -j ACCEPT
不在轉發鏈路裡放行到內部的流量是不行的。為什麼這裡的-d是192.168.1.2,因為在前面的nat表裡 PREROUTING已經進行了NAT路由,到達FORWARD處理流程的時候,目的地址已經從外網絡卡IP地址變成192.168.1.2,進入內網當然只能用內網IP地址過濾了。
還要轉發一些流量許可
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p icmp -j ACCEPT
iptables -A FORWARD -i lo -j ACCEPT
iptables -A FORWARD -o eth0 -j ACCEPT

不要用系統自己帶的那個防火牆圖形設定,一用就出RH-Firewall-1-INPUT,搞的自己都亂了。

另外用CentOS 5.3速度很慢,遠端桌面接進去,畫面都不動,看了CentOS 5.3預設封掉轉發是有原因的。
用CentOS 6.6就沒啥問題了,速度還可以接受。

下面是一些網路的設定命令
如果開始只有一個網絡卡,後來新增的,那麼只有
/etc/sysconfig/network-scripts/ifcfg-eth0
沒有ifcfg-eth1,可以複製ifcfg-eth0為ifcfg-eth1,然後修改裡面的內容。
需要去檢視網絡卡硬體檔案
/etc/udev/rules.d/70-persistent-net.rules
確認裡面有新增加的網絡卡,記錄下mac地址,
DEVICE=eth1
NAME="System eth1"
HWADDR=00:50:56:A0:40:18
IPADDR=192.168.1.1
PREFIX=24
GATEWAY=
DNS1=
DOMAIN=
修改項,ip地址,掩碼,HWADDR就是mac地址,如果版本高,有UUID,改的和eth0不同就可以。
內網絡卡不設閘道器。PREFIX是字首,和掩碼是一個意思,不同寫法。os版本不同,5的寫NETMASK,6就是PREFIX

iptables -F
清除預設表filter中的所有規則鏈的規則
iptables -X
清除預設表filter中使用者自定鏈中的規則
/etc/rc.d/init.d/iptables save  或者 service iptables save
儲存命令打進去的設定,不然重新啟動就沒了
service iptables restart
重新啟動服務

--------------------------------------分割線 --------------------------------------

CentOS 7.0關閉預設防火牆啟用iptables防火牆  http://www.linuxidc.com/Linux/2015-05/117473.htm

iptables使用範例詳解 http://www.linuxidc.com/Linux/2014-03/99159.htm

Linux防火牆iptables詳細教學 http://www.linuxidc.com/Linux/2013-07/87045.htm

iptables的備份、恢復及防火牆指令碼的基本使用 http://www.linuxidc.com/Linux/2013-08/88535.htm

Linux下防火牆iptables用法規則詳解 http://www.linuxidc.com/Linux/2012-08/67952.htm

--------------------------------------分割線 --------------------------------------

本文永久更新連結地址http://www.linuxidc.com/Linux/2015-07/120563.htm


IT145.com E-mail:sddin#qq.com