У меня три роутера. Интерфейс WAN маршрутизатора 0 подключается к Интернет-провайдеру, а интерфейс WAN маршрутизатора 1 и маршрутизатора 2 подключается к интерфейсам локальной сети маршрутизатора 0 (т. Е. С проводным подключением). Вот как это выглядит, включая назначения пространства IP:
(Motorola SBG6580 Cable Modem)
Router0 LAN IP: 192.168.0.1 (also the default route for both WAN connections shown next).
(Linksys E4200)
Router1 WAN IP: 192.168.0.3
Router1 LAN IP: 192.168.1.1 (also the default route for clients on the 192.168.1.xxx subnet).
(ASUS RT-AC66U)
Router2 WAN IP: 192.168.0.4
Router2 LAN IP: 192.168.2.1 (also the default route for clients on the 192.168.2.xxx subnet).
Таким образом, в итоге, порт WAN маршрутизатора 1 и маршрутизатора 2 каждый подключается к порту локальной сети маршрутизатора 0, и оба с поддержкой NAT (то есть с NAT).
А вот таблицы маршрутизации для Router1 и Router 2 соответственно (то есть netstat -rn):
Kernel IP routing table (Router1) ... eth0 here is the WAN interface.
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.0.1 * 255.255.255.255 UH 0 0 0 eth0
192.168.2.0 192.168.0.4 255.255.255.0 UG 0 0 0 eth0 <========== My Static Route Entry
192.168.1.0 * 255.255.255.0 U 0 0 0 br0
192.168.0.0 * 255.255.255.0 U 0 0 0 eth0
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
default 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
Kernel IP routing table (Router2) ... vlan2 here is the WAN interface.
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.0.1 0.0.0.0 255.255.255.255 UH 0 0 0 vlan2
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 br0
192.168.1.0 192.168.0.3 255.255.255.0 UG 0 0 0 vlan2 <========== My Static Route Entry
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 vlan2
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 vlan2
Обратите внимание на статические маршруты (на которые указывает стрелка), которые я настроил на каждом маршрутизаторе (Router1 и Router2). Их цель - предоставить клиентам в локальной сети Router1 доступ к клиентам в локальной сети Router2 и наоборот.
Но это еще не совсем работает, потому что, во-вторых, мне нужно добавить записи "iptable" на Router1 и Router2, чтобы указать каждой из них разрешить передачу ВСЕГО WAN-трафика, идущего на его локальную сеть.
Таким образом, на этом этапе, используя два проводных ПК (один подключен к подсети LAN маршрутизатора 1, а другой подключен к подсети LAN маршрутизатора 2), я могу убедиться, что работают следующие эхо-запросы:
PC1 -- 192.168.1.4: Can ping 192.168.0.4 (the WAN interface of the opposite router) and can ping 192.168.2.1 (the LAN interface of the opposite router).
PC2 -- 192.168.2.4: Can ping 192.168.0.3 (the WAN interface of the opposite router) and can ping 192.168.1.1 (the LAN interface of the opposite router).
но на этом этапе ни один компьютер не может связаться с IP-клиентами внутри локальной сети противоположного маршрутизатора. Как упомянуто выше, они могут пропинговать IP-адрес WAN противоположного маршрутизатора, и они могут пропинговать IP-адрес маршрута по умолчанию для противоположной подсети LAN, но они не могут пропинговать IP-клиентов глубже в противоположной подсети LAN.
Я полагаю, что это связано с тем, что на маршрутизаторе 1 и маршрутизаторе 2 должна быть запись IPTABLES, которая позволяет ВСЕМУ трафику, исходящему со стороны WAN, входить в сторону LAN - что практически никогда не является поведением маршрутизатора по умолчанию из соображений безопасности. Но в этом случае это безопасно, поскольку интерфейс WAN маршрутизатора 1 и маршрутизатора 2 не подключается напрямую к Интернет-провайдеру.
Поэтому мне нужно придумать команды iptables(1) (firewall) для реализации этого. Я буду перечитывать справочную страницу Unix, чтобы вспомнить синтаксис iptables.
Но, возможно, некоторые люди, которые уже хорошо знакомы с iptables, могут подсказать, какими должны быть эти команды. Для справки ниже приведена запись NAT iptables для Router1 и Router2. Каждому из них нужны соответствующие правила iptables, чтобы весь исходящий трафик WAN достигал сети LAN:
Router1 ... (вывод 'iptables -L -t nat'):
admin@RT-AC66U:/tmp/home/root# iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
VSERVER all -- anywhere 192.168.0.3
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- !192.168.0.3 anywhere
MASQUERADE all -- anywhere anywhere MARK match 0xd001
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain VSERVER (1 references)
target prot opt source destination
DNAT tcp -- anywhere anywhere tcp dpt:webcache to:192.168.1.1:80
DNAT tcp -- anywhere anywhere tcp dpt:8443 to:192.168.1.1:8443
VUPNP all -- anywhere anywhere
Chain VUPNP (1 references)
target prot opt source destination
Router2 ... (вывод 'iptables -L -t nat'):
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DROP all -- anywhere 192.168.2.0/24
WANPREROUTING all -- anywhere 192.168.0.4
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- anywhere anywhere
SNAT all -- 192.168.2.0/24 192.168.2.0/24 to:192.168.2.1
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain WANPREROUTING (1 references)
target prot opt source destination
DNAT icmp -- anywhere anywhere to:192.168.2.1
Я ценю помощь в этом (то есть команды iptables). Если я сначала доберусь до решения, я, конечно, опубликую команды iptables.