Я настроил Ubuntu 12.04 как шлюз. У него два интерфейса
eth0 with ip 192.168.122.39(Static) and
eth1 connected to modem with ip address 192.168.2.3(through DHCP).
ip-forwarding включен в поле маршрутизатора.
Клиентская машина настроена как:
ip address 192.168.122.5 and gateway 192.168.122.39
Клиентские машины могут пинговать маршрутизатор (192.168.122.39). Но при пинге 8.8.8.8 ответ не достигает клиентских машин, но в выводе tcpdump на шлюзе я вижу эхо-запрос для 8.8.8.8, но никогда не эхо-ответ. Это из-за 122.5 не перенаправляет запрос в сеть 2.0. Не могли бы вы помочь мне исправить это.
изменить: ПОСЛЕДУЮЩИЕ ШАГИ
Эта машина работает как XEN HVM.
Маршрутизатор: два интерфейса eth0: 192.168.122.39 (статический ip) eth1: 192.168.2.3 на маршрутизаторе
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
ptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
На клиентской машине
ping 8.8.8.8
на шлюзе результат tcpdump
tcpdump -v -i eth0
192.168.122.1 - виртуальный мост
tcpdump: прослушивание eth0, тип канала EN10MB (Ethernet), размер захвата 65535 байт
14: 17: 26.352383 IP (tos 0x0, ttl 64, id 0, смещение 0, флаги [DF], proto ICMP (1), длина 84) 192.168.122.1> google-public-dns-a.google.com: ICMP эхо-запрос, id 1541, seq 8395, длина 64
14: 17: 26.938156 IP (tos 0x0, ttl 64, id 0, смещение 0, флаги [DF], proto ICMP (1), длина 84) 192.168.122.1> google-public-dns-a.google.com: ICMP эхо-запрос, id 1513, seq 10735, длина 64
трассировка 8.8.8.8. с клиентской машины:
трассировка 8.8.8.8
1: 192.168.122.39 0,046 мс pmtu 1500
1: 192.168.122.5 0.259 мс
1: 192.168.122.5 0.188 мс
2: нет ответа
3: нет ответа
Ваш модем не знает, как подключиться к сети 192.168.122.0/24. Вы должны сделать NAT на вашем маршрутизаторе или вы должны сообщить своему модему, что 192.168.122.0/24 должен быть маршрутизирован через 192.168.2.3.
Для NAT попробуйте следующие правила:
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -A FORWARD -i eth0 -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
Перезагрузите брандмауэр, чтобы сбросить старые правила.