使用iptables及其伪装特性,将所有流量转发到老的服务器。 点击看iptables的介绍 。
本文假设没有运行的iptables,至少没有针对prerouting链和postrouting链的NAT表的转发规则。
1) 首先开启端口转发
# echo "1" >/proc/sys/net/ipv4/ip_forward
或sysctl net.ipv4.ip_forward=1
2) 增加端口转发
将端口1111上的流量转发到主机2.2.2.2 上的端口1111。
# iptables -t nat -A PREROUTING -p tcp --dport 1111 -j DNAT --to-destination 2.2.2.2:1111
然后告诉IPtables伪装起来(masquerade)
# iptables -t nat -A POSTROUTING -j MASQUERADE
仅仅重定向一个固定网络甚至是一台主机的流量
# iptables -t nat -A PREROUTING -s 192.168.1.1 -p tcp --dport 1111 -j DNAT --to-destination 2.2.2.2:1111
仅仅重定向一个网段的流量
# iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 1111 -j DNAT --to-destination 2.2.2.2:1111
这就可以进行Linux端口转发流量了。
查看转发规则 sudo iptables -t nat -nL
1) docker bridge模式
2) 安全方面,同主机上端口指定网卡ip上的流量转发
3) 端口转发到另外的服务器,见上边案例
4) snat场景
5) dnat场景,内网访问外网
https://www.debuntu.org/how-to-redirecting-network-traffic-to-a-new-ip-using-iptables/
基本思想:开启IP转发,设置好iptables规则。
2.1.开启IP转发
两种方式,
临时:echo "1">/proc/sys/net/ipv4/ip_forward
固定:修改/etc/sysctl.conf,取消这一行的注释:
net.ipv4.ip_forward= 1
然后使之立即生效
sysctl -p
2.2.设置iptables规则
临时:iptables -t nat -A POSTROUTING -j MASQUERADE
固定:
或者把上面这个写到一个启动脚本中(比如/etc/rc.local)。这里还有另外一个版本:
iptables -F
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 -jMASQUERADE
据说“第一句是清除掉之前所有的iptables规则,第二第三句是允许接收和发送数据包,第四句是在eth1网口上NAT“,只是比上面的多了几句废话,最后指定网卡参数什么,还没试过。iptables的用法还得好好学。
3.客户端设置
将缺省网关设置为192.168.0.1,至于IP,192.168.0.*自己随便设。
http://blog.sina.com.cn/s/blog_59cf67260100gtxf.html
首先要说明的是IPTables命令必需以root权限运行,这意味着你需要使用root身份登录或者能够有权限使用su或sudo -i取得root Shell。下面的内容中我们都使用sudo,这也是Ubuntu系统上的首选方法。最好的起点就是先通过“-L”参数来查看下当前系统的所有IPTables规则:
sudo iptables -L
我们可以看到Linux中都有的3个常用默认链(INPUT、OUTPUT和FORWARD),同时也可以看到每个链的缺省策略(每个链对默认策略都是接受),在此我们可以看到Ubuntu中并没有添加任何默认规则集。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)