博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Iptables实现公网IP DNAT/SNAT
阅读量:6641 次
发布时间:2019-06-25

本文共 804 字,大约阅读时间需要 2 分钟。

实现NAT是最基本的功能,大部分家用路由都是基于其SNAT方式上网,使用Iptables实现外网DNAT也很简单,不过经常会出现不能正常NAT的现象。

以下命令将客户端访问1.1.1.1的HTTP数据DNAT到2.2.2.2,很多人往往只做这一步,然后测试不能正常连接。

1
iptables -t nat -A PREROUTING -p tcp -d 1.1.1.1 --dport 80 -j DNAT --to 2.2.2.2:80

想像一下此时客户端访问1.1.1.1的数据流程:

1
2
3
4
客户端访问1.1.1.1
1.1.1.1根据Iptables DNA将数据包发往2.2.2.2,此时源IP为客户端IP
2.2.2.2处理后根据源IP直接向客户端返回数据,要知道此时客户端是直接和1.1.1.1连接的
然后呢,客户端不知所云,不能正常连接

最后还要添加一条SNAT规则,将发到2.2.2.2的数据包SNAT,1.1.1.1充当代理服务器的角色。

1
iptables -t nat -A POSTROUTING -d 2.2.2.2 -j SNAT --to-
source
1.1.1.1

别忘记开启内核转发功能:

 
                                              
1
echo 
1 > 
/proc/sys/net/ipv4/ip_forward
 
 
实例配置:
 
cat /etc/sysconfig/iptables-A PREROUTING -d 60.190.*****.236/32 -p tcp -m tcp --dport 8004 -j DNAT --to-destination 172.20.18.104:80-A PREROUTING -d 60.190.*****236/32 -p udp -m udp --dport 8004 -j DNAT --to-destination 172.20.18.104:80

 

 

 
 

转载地址:http://tgavo.baihongyu.com/

你可能感兴趣的文章
RHCS(维护篇)
查看>>
let和const命令 — 学习ES6(一)
查看>>
shell脚本(二)
查看>>
nginx + tomcat配置https的两种方法
查看>>
21个挑战题,几杯咖啡的时间,来试试
查看>>
KVC KVO
查看>>
Oracle ODI 12c之多表联合查询以及定时任务设置
查看>>
设置KSH的自动补全和历史命令功能
查看>>
python--threading多线程总结
查看>>
我的友情链接
查看>>
PHP中数组的定义及声明实例
查看>>
批处理删除任意天之前的文件
查看>>
421 Home directory not available - aborting错误的解决方法
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
js的发布/订阅模式
查看>>
Introduction To Neural Networks
查看>>
事件处理
查看>>
Android 中的 Service 全面总结(三)
查看>>
怎样利用strace调试
查看>>