linux主机配置dnat,基于Linux系统Firewall实现SNAT+DNAT

1.    开启系统的转发功能

vi /etc/sysctl.conf 将 net.ipv4.ip_forward=0 修改成 net.ipv4.ip_forward=1

编辑后使用命令让配置马上生效 sysctl -p

开启目标服务器/中转服务器端口**(本例仅限于http服务) python -m SimpleHTTPServer 1024

查询端口**状态 netstat -tupln

2.     iptables 的命令

iptables -t nat -A PREROUTING -p tcp --dport [端口号] -j DNAT --to-destination [目标IP]

iptables -t nat -A PREROUTING -p udp --dport [端口号] -j DNAT --to-destination [目标IP]

iptables -t nat -A POSTROUTING -p tcp -d [目标IP] --dport [端口号] -j SNAT --to-source [本地服务器IP]

iptables -t nat -A POSTROUTING -p udp -d [目标IP] --dport [端口号] -j SNAT --to-source [本地服务器IP]

中转服务器添加如下规则:

DNAT

iptables -t nat -D PREROUTING -p tcp --dport {外部端口} -j DNAT --to-destination {内部IP:内部端口}

SNAT

iptables -t nat -A POSTROUTING -p tcp -d {内部IP} --dport {内部端口} -j SNAT --to-source {外部IP:外部端口}

3.    重启 iptables 使配置生效

service iptables save

service iptables restart

4.    验证规则生效

在第三方节点 curl http://{外部IP}:{外部端口}

在中转服务器抓包观察IP转发情况

5.    扩展需求

多端口转发修改方案: ( 将本地服务器的 50000~65535 转发至目标 IP 为 1.1.1.1 的 50000~65535 端口 )

-A PREROUTING -p tcp -m tcp --dport 50000:65535 -j DNAT --to-destination 1.1.1.1

-A PREROUTING -p udp -m udp --dport 50000:65535 -j DNAT --to-destination 1.1.1.1

-A POSTROUTING -d 1.1.1.1/32 -p tcp -m tcp --dport 50000:65535 -j SNAT --to-source [本地服务器IP]

-A POSTROUTING -d 1.1.1.1/32 -p udp -m udp --dport 50000:65535 -j SNAT --to-source [本地服务器IP]

非同端口号修改方案:(使用本地服务器的 60000 端口来转发目标 IP 为 1.1.1.1 的 50000 端口)

-A PREROUTING -p tcp -m tcp --dport 60000 -j DNAT --to-destination 1.1.1.1:50000

-A PREROUTING -p udp -m udp --dport 60000 -j DNAT --to-destination 1.1.1.1:50000

-A POSTROUTING -d 1.1.1.1/32 -p tcp -m tcp --dport 50000 -j SNAT --to-source [本地服务器IP]

-A POSTROUTING -d 1.1.1.1/32 -p udp -m udp --dport 50000 -j SNAT --to-source [本地服务器IP]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值