首页 » 嵌入式笔记 » 正文

iptables折腾日记

一:开启IP转发功能
修改 /etc/sysctl.conf 添加 net.ipv4.ip_forward=1 然后运行 sysctl -p
二:必要的前提工作,使能iptables的各项功能

iptables -t nat -F
iptables -t nat -X
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -P FORWARD ACCEPT
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F
iptables -X
iptables -P FORWARD ACCEPT
iptables -P INPUT ACCEPT

三:常用的功能:
1:IP转发功能
将来源为104.251.226.66访问45.124.64.183的3389端口转发到163.172.26.39:3389端口。 (45.124.64.183是本地网卡分配的地址)

iptables -t nat -A PREROUTING -s 104.251.226.66 -d 45.124.64.183 -p tcp --dport 3389 -j DNAT --to-destination 163.172.26.39:3389

将163.172.26.39:3389端口将数据返回给客户端时,将源ip改为45.124.64.183

iptables -t nat -A POSTROUTING -d 163.172.26.39 -p tcp --dport 3389 -j SNAT --to 45.124.64.183

解释: PREROUTING 为入网卡时的规则 POSTROUTING 为出网卡时的规则
-s参数为指定源端 -d为目标 DNAT是将目标重定位到XXXX SNAT则表示把源修改为XXX

上面 iptables -t nat -A PREROUTING -s 104.251.226.66 -d 45.124.64.183 -p tcp –dport 3389 -j DNAT –to-destination 163.172.26.39:3389 这条指令生效后,当 104.251.226.66 来访问 45.124.64.183的3389端口的时候,会被重新转发到 163.172.26.39:3389上面去(此时访问源的IP未被改变,依然是104.251.226.66).
此时,163.172.26.39收到的数据源依然认为是104.251.226.66,此时数据返回也是直接返回到104.251.226.66,而源端肯定会丢弃此数据包(因为源端明明是与45.124.64.183进行交互的)
nat1
所以我们需要再加条规则 iptables -t nat -A POSTROUTING -d 163.172.26.39 -p tcp –dport 3389 -j SNAT –to 45.124.64.183 到 163.172.26.39的源地址改为NAT主机的IP,这样真实服务器才会认为是NAT主机发送的请求,返回数据也向NAT主机进行发送.NAT服务器在收到数据时也会根据对照表将数据返回给访客端

发表评论