Назад | Перейти на главную страницу

Как выполнить NAT с внутренним интерфейсом в качестве моста

(дублирующий вопрос от AskUbuntu) У меня есть следующая сетевая диаграмма: Диаграмма сети

192.168.0.0/24 сеть с 4 веб-серверами (.1, .2, .3, .4). В нем 2 Ubuntu 14.04 (VM1 и VM2). У них есть 2 физических интерфейса (eth0 и eth1). И туннель Ethernet L2TP, настроенный таким образом:

root@vm1:~# modprobe l2tp_eth
root@vm1:~# ip l2tp add tunnel tunnel_id 1000 peer_tunnel_id 2000 encap udp local 10.0.0.1 remote 10.0.1.1 udp_sport 6000 udp_dport 5000
root@vm1:~# ip l2tp add session tunnel_id 1000 session_id 3000 peer_session_id 4000

root@vm2:~# modprobe l2tp_eth
root@vm2:~# ip l2tp add tunnel tunnel_id 2000 peer_tunnel_id 1000 encap udp local 10.0.1.1 remote 10.0.0.1 udp_sport 5000 udp_dport 6000
root@vm2:~# ip l2tp add session tunnel_id 2000 session_id 4000 peer_session_id 3000

На каждой виртуальной машине у меня настроен brigde между eth1 (подключенным к сети 192.168.0.0) и интерфейсом l2tpeth0 (туннель). В /etc/network/interfaces ВМ2:

auto l2tp
iface l2tp inet static
        address 192.168.0.6
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        bridge_ports l2tpeth0 eth1
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0

Теперь сервер с адресом 192.168.0.5 отправляет пакет на удаленный адрес 172.0.0.1. Его путь показан оранжевой пунктирной линией (он захвачен brigde и отправлен через туннель). Моя задача - сделать так, чтобы он шел по синему пунктирному пути - получил NAT на VM1 и прошел через интерфейс eth1. На VM2 у меня настроен простой NAT:

iptables -t nat -A POSTROUTING -o eth0 -j LOG
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Но это не помогает - я не вижу пакетов в квестах в /var/log/syslog (хотя и есть).

На всякий случай:

root@vm2:~#  cat /proc/sys/net/bridge/bridge-nf-call-iptables
1
root@vm2:~# cat /proc/sys/net/ipv4/ip_forward
1

Итак, вопрос в том, как сделать пакет NAT, предназначенный только для определенных пунктов назначения? Я в порядке, например, трафик с 192.168.0.4 на 192.168.0.1 использует туннель и не получает NAT (именно поэтому у меня в первую очередь туннель)

Решение было очень простым. Показанная конфигурация была в порядке. Но виртуальные машины 192.168.0.5 и .6 не использовали настроенный шлюз 192.168.0.6 и отправляли кадры L2 на 192.168.0.254, таким образом не достигая IP-стека интерфейса l2tp. Это не стандартные устройства, а Cisco WMS.