我正在安装一个运行多个虚拟机的 vmware,我想将其中 1 个虚拟机用作路由器/防火墙,所有外部 IP 都连接到该虚拟机,并在其他虚拟机上运行不同的服务,如 apache ftp postfix ...我对这个 iptable 有点困惑,你可以看到具有外部 IP 的两个接口具有相同的 mac,我可以更改它,但不确定这是否会有所不同,提供商将它们称为“故障转移 IP”,我可以订购任意数量的虚拟机
route -n 显示以下内容,不确定为什么没有 ens35 的条目?!
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 163.172.64.1 0.0.0.0 UG 0 0 0 ens33
100.200.30.1 0.0.0.0 255.255.255.255 UH 0 0 0 ens33
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 ens34
执行完以下命令后,我可以通过 ssh 从两个 IP(1.2.3.240 / 11.22.33.50)访问路由器,但再也无法访问了(其他 IP 仍然有效),我也无法通过 ssh 访问另一台机器,也就是练习的目标
# iptables -t nat -A PREROUTING -d 11.22.33.50 -j DNAT --to 192.168.0.250
# iptables -t nat -A POSTROUTING -s 192.168.0.250 -j SNAT --to 11.22.33.50
有人看到我的错误了吗?只要我理解上面的内容,那么从 11.22.33.50 传入的所有内容都应该路由到另一台虚拟机,而另一台虚拟机发送的所有内容都应该转发,就好像它来自 11.22.33.50 一样
路由器的 /ETC/NETWORK/INTERFACE/
auto lo
iface lo inet loopback
auto ens33
iface ens33 inet static
address 1.2.3.240
netmask 255.255.255.255
broadcast 1.2.3.240
dns-nameservers 62.210.16.6 62.210.16.7
post-up route add 100.200.300.1 dev ens33
post-up route add default gw 100.200.30.1
post-down route del 100.200.300.1 dev ens33
post-down route del default gw 100.200.30.1
auto ens34
iface ens34 inet static
address 192.168.0.1
netmask 255.255.255.0
broadcast 192.168.0.255
auto ens35
iface ens35 inet static
address 11.22.33.50
netmask 255.255.255.255
broadcast 11.22.33.50
dns-nameservers 62.210.16.6 62.210.16.7
post-up route add 100.200.300..1 dev ens33
post-up route add default gw 100.200.30.1
post-down route del 100.200.300.1 dev ens33
post-down route del default gw 100.200.30.1
IFCONFIG :路由器的
ens33 Link encap:Ethernet HWaddr 00:50:56:00:ed:e4
inet addr:1.2.3.240 Bcast:1.2.3.240 Mask:255.255.255.255
inet6 addr: xxx Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:17467 errors:0 dropped:0 overruns:0 frame:0
TX packets:1154 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1124709 (1.1 MB) TX bytes:236195 (236.1 KB)
ens34 Link encap:Ethernet HWaddr 00:0c:29:8b:73:4c
inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: xxx Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:648 (648.0 B)
ens35 Link encap:Ethernet HWaddr 00:50:56:00:ed:e4
inet addr:11.22.33.50 Bcast:11.22.33.50 Mask:255.255.255.255
inet6 addr: xxx Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:17461 errors:0 dropped:0 overruns:0 frame:0
TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1124367 (1.1 MB) TX bytes:1040 (1.0 KB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:160 errors:0 dropped:0 overruns:0 frame:0
TX packets:160 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:11840 (11.8 KB) TX bytes:11840 (11.8 KB)
第二台机器的 /ETC/NETWORK/INTERFACE/
auto lo
iface lo inet loopback
auto ens34
iface ens34 inet static
address 192.168.0.250
netmask 255.255.255.0
broadcast 192.168.0.255
geteway 192.168.0.1
network 192.168.0.0
dns-nameservers 62.210.16.6 62.210.16.7
IFCONFIG :第二台机器
ens34 Link encap:Ethernet HWaddr 00:0c:29:60:4a:1a
inet addr:192.168.0.250 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: xxx Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:5 errors:0 dropped:0 overruns:0 frame:0
TX packets:13 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:414 (414.0 B) TX bytes:1062 (1.0 KB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:160 errors:0 dropped:0 overruns:0 frame:0
TX packets:160 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:11840 (11.8 KB) TX bytes:11840 (11.8 KB)
答案1
看起来我得到了一些信息!
关键在于 ubuntu 默认禁用了路由
echo 1 > /proc/sys/net/ipv4/ip_forward 这将启用路由直到重新启动
并更改 /etc/sysctl.conf net.ipv4.ip_forward = 0 --to-> 1 应该可以永久启用它(尚未测试)
这是 NAT 的基本设置,但我测试了我的 DNAT 设置,它们似乎可以工作 http://www.revsys.com/writings/quicktips/nat.html
仍然不确定我是否需要唯一的 MAC 地址,但目前还不需要