linux實現nat轉發和內部端口映射


路由機

eth0:114.114.114.114(公網ip)  eth1:192.168.1.1(內網ip)

pc1

eth0:192.168.1.2(內網ip)    eth1(撥號ip)

pc2

eth0:192.168.1.3(內網ip)    eth1(撥號ip)

 

1.配置路由機網卡信息

vim /etc/sysconfig/network-scripts/ifcfg-eth1

TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eth1
UUID=85290fec-9166-4a02-90c3-711bf55d1ae2
DEVICE=eth1
ONBOOT=yes
HWADDR=00:0c:29:27:64:b8
IPADDR=192.168.1.1

此網卡只配置IP,不配置網關

2.配置pc1網卡

vim /etc/sysconfig/network-scripts/ifcfg-eth0

TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eth0
UUID=d79660a0-4225-4f0e-96b1-4d61fc05a17c
DEVICE=eth0
ONBOOT=yes
HWADDR=00:0c:29:97:6a:4b
IPADDR=192.168.1.2
NETMASK=255.255.255.0
GATEWAY=192.168.1.1


pc2配置與pc1類似,保證2台pc機與網關能互相ping通

此時pc1 pc2還不能訪問外網,需要路由機做iptables規則

1.查看機器的轉發功能時候打開

cat /proc/sys/net/ipv4/ip_forward

若返回1則表示已經打開

返回0則:

echo "1" > /proc/sys/net/ipv4/ip_forward

此規則及時生效,但重啟后就失效了,需要在配置文件里添加

vim /etc/sysctl.conf

net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
#每個消息隊列的最大字節限制
kernel.msgmax = 65536
#每個消息的最大size
kernel.shmmax = 68719476736
#內核參數定義單個共享內存段的最大值
kernel.shmall = 4294967296
#控制共享內存頁數

iptables做nat轉發規則

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to 114.114.114.114

將192.168.1.0網段轉發至路由機的公網IP(靜態)

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

將所有網段轉發至路由機公網ip(動態)
現在2台pc機就能訪問外網了,如果不能訪問則檢查下dns配置

 

 

內部端口映射

iptables -t nat -A PREROUTING -d 114.114.114.114/32 -p tcp -m tcp --dport 26688 -j DNAT --to-destination 192.168.1.2:22

把192.168.1.2的22端口映射到外部26688端口
找台外網機器訪問下114.114.114.114的26688端口,就可以直接進入pc1

 

 

刪除規則:把-A改為-D

iptables -t nat -D PREROUTING -d 114.114.114.114/32 -p tcp -m tcp --dport 26688 -j DNAT --to-destination 192.168.1.2:22

映射失效

最后保存下iptables配置

/usr/sbin/iptables-save


但是當pc1撥號時也會導致端口映射失效,類似雙網卡默認對外路由的問題,通過路由機訪問的IP會默認走撥號端口,需要做下ip偽裝,將通過訪問內網的公網地址偽裝成網關地址從而實現內網通信

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE


 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM