В моей «роутерной» машине у меня есть следующее /etc/network/interfaces
:
# The loopback network interface
auto lo eth0 eth1 eth2 eth3
iface lo inet loopback
# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp
# Subred 1
iface eth1 inet static
address 192.168.10.1
netmask 255.255.255.0
# Subred 2 (dhcp)
iface eth2 inet static
address 192.168.20.1
netmask 255.255.255.0
# Host-only
iface eth3 inet static
address 192.168.56.10
netmask 255.255.255.0
broadcast 192.168.56.255
В ~/.bashrc
(по крайней мере, сейчас, позже может быть в /etc/network/interfaces
):
iptables -F
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 80 -j DNAT --to-destination 192.168.10.20:80
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 22 -j DNAT --to-destination 192.168.20.46:22
iptables -A FORWARD -i eth0 -p tcp --dport 80 -d 192.168.10.20 -j ACCEPT
iptables -A FORWARD -i eth0 -p tcp --dport 22 -d 192.168.30.50 -j ACCEPT
И iptables -t nat-L
дает мне:
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- anywhere anywhere tcp dpt:http to:192.168.10.20:80
DNAT tcp -- anywhere anywhere tcp dpt:ssh to:192.168.20.46:22
И все же я не могу подключиться ни к веб-серверу в 192.168.10.20
, ни к серверу ssh в 192.168.30.50
из-за пределов подсети. С внутренней стороны нет проблем.
Я пытался все это время соединиться через eth3
и не перенаправил трафик от него, только от eth0
. Глупая ошибка, которая заняла дни для решения...