环境:
A服务器: 网卡1:192.168.1.151 网卡2:10.10.69.10
B服务器: 网卡1:10.10.69.41
要求:
访问192.168.1.151:1521 即访问 10.10.69.41:1521
启用端口转发:
echo 1 > /proc/sys/net/ipv4/ip_forward
清空nat表
iptables -t nat -F
端口转发配置详解:
1.模拟linux转发过程:
通过192.168.1.171访问192.168.1.151:1521 即访问 10.10.69.41:1521 转发过程:
A服务器接受到数据包时:
src 192.168.1.171 port 某个端口 dst 192.168.1.151 port 1521
先使用dnat转换目的端口 转换后的数据包如下:
src 192.168.1.171 port 某个端口 dst 10.10.69.41 port 1521
然后将转换后的数据包 进行snat 或者 MASQUERADE
src 10.10.69.10 port 某个端口 dst 10.10.69.41 port 1521
2.命令实现:
首先实现第一次dnat转换:
iptables -t nat -A PREROUTING -p tcp -d 192.168.1.151 --dport 1521 -j DNAT --to-destination 10.10.69.41
(大意: 匹配dst 192.168.1.151 port 1521 的包将目的地址变为10.10.69.41)
2装方式转换src 地址:
(1)然后进行MASQUERADE
iptables -t nat -A POSTROUTING -p tcp -d 10.10.69.41 --dport 1521 -j MASQUERADE
(大意:配置dst 10.10.69.41 port 1521 的数据包 将源地址改为访问dst 10.10.69.41 port 1521 的网卡地址)
(2)使用snat转换:
iptables -t nat -A POSTROUTING -p tcp -d 10.10.69.41 --dport 1521 -j SNAT --to-source 10.10.69.10
(大意: 匹配dst 10.10.69.41 port 1521 的包将源地址变为10.10.69.10)
其实这里虽然以前弄过 但是没有做笔记 现在重新做了一份
这一次卡在了 数据包 是先使用dnat 然后将修改后的数据包 在snat 所以之前我使用
iptables -t nat -A PREROUTING -p tcp -d 192.168.1.151 --dport 1521 -j DNAT --to-destination 10.10.69.4
iptables -t nat -A POSTROUTING -p tcp -d 10.192.168.1.151 --dport 1521 -j SNAT --to-source 10.10.69.10
这样的语句老是不成功 主要还是原理没有弄清楚明白 现在原理清楚了 在怎么也不会弄错了