nat 表的应用很大程度上实现了一个路由器的功能
案例1: 假设你的机器有两块网卡, eth0 和 eth1, 其中 eth0 的 ip 为 10.0.2.68,eth1 的 ip 为 192.168.1.1eth0 链接了互联网, 但是 eth1 没有链接现在又另外一台机器, ip 为 192.168.1.2 和 eth1 是互通的, 那么如何设置才能让 ip 为 192.168.1.2 这台机器上外网了?
我们配置 nat 表的规则即可
1 打开路由转发功能
echo "1"> /proc/sys/net/ipv4/ip_forward
2 配置路由规则
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
3 配置网关
B 上设置网关为 192.168.100.1
备注 设置 IP 和掩码
ifconfig eth0 192.168.5.40 netmask 255.255.255.0
设置网关
route add default gw 192.168.5.1
route -n 查看网关
案例 2:A 机器可以上网, B 机器只能和 C 通信, 让 A 机器可以直接连通 B 机器的 22 端口
以我自己的环境为例, A 机器为 windos 主机, ip 为 192.168.226.1
B 机器为 vmware 里面的 linux1, 有两个网卡, ens33 ip 为 192.168.226.129
ens37 为 192.168.100.1
C 机器为虚拟机 linux2 ,ip 为 192.168.100.100
现在怎么配置可以让主机 ssh 连接 linux2 呢
1. 依旧是打开路由转发
echo "1"> /proc/sys/net/ipv4/ip_forward
2 配置路由规则
A 上执行
iptables -t nat -A PREROUTING -d 192.168.226.129 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22
在路由前创建一个映射端口, 指明从哪里进, 进到哪里
A 上执行
iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.226.129
在路由后添加源 ip 地址, 目的 ip 地址对应关系, 指明从哪里出
3 配置网关
B 上设置网关为 192.168.100.1
最后, ssh 链接 192.168.226.129 port 1122 就可以登陆到 C 机器
来源: http://www.bubuko.com/infodetail-2535988.html