Я установил Tomato USB на моем втором (внутреннем) маршрутизаторе. Внешний маршрутизатор просто перенаправляет VPN-трафик на него, и он действует как VPN-сервер. Я могу подключиться к VPN-серверу и моим локальным сетям, но я теряю подключение к Интернету.

Я знаю почему: я не маршрутизирую трафик VPN через шлюз. Я искал вокруг и обнаружил, что мне нужно сделать следующее:

iptables -I FORWARD -i tun0 -o eth0 \
         -s 10.8.0.0/24 -m conntrack --ctstate NEW -j ACCEPT

iptables -I FORWARD -m conntrack --ctstate RELATED,ESTABLISHED \
         -j ACCEPT

iptables -t nat -I POSTROUTING -o eth0 \
          -s 10.8.0.0/24 -j MASQUERADE

Хотя в моем случае я должен изменить tun0 на tun21, а eth0 на br0. Однако версия TomatoUSB, которую я имею, выдает эту ошибку:

iptables v1.3.8: Couldn't load match `conntrack':File not found

AFAIK, это старая версия iptables. Итак, как я могу маршрутизировать и маскировать свой VPN-трафик через маршрутизатор TomatoUSB?

маршрут -n

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.0.1     0.0.0.0         255.255.255.255 UH    0      0        0 vlan2
10.8.0.2        0.0.0.0         255.255.255.255 UH    0      0        0 tun21
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 br0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 vlan2
10.8.0.0        10.8.0.2        255.255.0.0     UG    0      0        0 tun21
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

iptables --list

Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     udp  --  anywhere             anywhere            udp dpt:1194 
DROP       all  --  anywhere             anywhere            state INVALID 
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
shlimit    tcp  --  anywhere             anywhere            tcp dpt:ssh state NEW 
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     udp  --  anywhere             anywhere            udp spt:bootps dpt:bootpc 
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     udp  --  anywhere             anywhere            state NEW udp dpt:1194 
ACCEPT     all  --  anywhere             anywhere            

Chain FORWARD (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
           all  --  anywhere             anywhere            account: network/netmask: 192.168.1.0/255.255.255.0 name: lan 
ACCEPT     all  --  anywhere             anywhere            
DROP       all  --  anywhere             anywhere            state INVALID 
TCPMSS     tcp  --  anywhere             anywhere            tcp flags:SYN,RST/SYN TCPMSS clamp to PMTU 
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
wanin      all  --  anywhere             anywhere            
wanout     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain shlimit (1 references)
target     prot opt source               destination         
           all  --  anywhere             anywhere            recent: SET name: shlimit side: source 
DROP       all  --  anywhere             anywhere            recent: UPDATE seconds: 60 hit_count: 4 name: shlimit side: source 

Chain wanin (1 references)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             athena.utopia       tcp dpts:5999:x11-1 
ACCEPT     udp  --  anywhere             athena.utopia       udp dpts:5999:x11-1 
ACCEPT     tcp  --  anywhere             athena.utopia       tcp dpt:3022 
ACCEPT     udp  --  anywhere             athena.utopia       udp dpt:3022 

Chain wanout (1 references)
target     prot opt source               destination         

iptables -t nat -L -n -v

Chain PREROUTING (policy ACCEPT 24 packets, 1296 bytes)
 pkts bytes target     prot opt in     out     source               destination         
   14   588 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           udp dpt:1194 
   40 13755 WANPREROUTING  all  --  *      *       0.0.0.0/0            192.168.0.4         
    0     0 DROP       all  --  vlan2  *       0.0.0.0/0            192.168.1.0/24      

Chain POSTROUTING (policy ACCEPT 8 packets, 576 bytes)
 pkts bytes target     prot opt in     out     source               destination         
   12   912 MASQUERADE  all  --  *      vlan2   10.8.0.0/24          0.0.0.0/0           
    2   152 MASQUERADE  all  --  *      vlan2   10.8.0.0/24          0.0.0.0/0           
 6781  490K MASQUERADE  all  --  *      vlan2   0.0.0.0/0            0.0.0.0/0           
    0     0 SNAT       all  --  *      br0     192.168.1.0/24       192.168.1.0/24      to:192.168.1.1 
    0     0 MASQUERADE  all  --  *      vlan2   0.0.0.0/0            0.0.0.0/0           

Chain OUTPUT (policy ACCEPT 8 packets, 576 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain WANPREROUTING (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DNAT       icmp --  *      *       0.0.0.0/0            0.0.0.0/0           to:192.168.1.1 
    0     0 DNAT       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpts:5999:6001 to:192.168.1.130 
    0     0 DNAT       udp  --  *      *       0.0.0.0/0            0.0.0.0/0           udp dpts:5999:6001 to:192.168.1.130 
    2   128 DNAT       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:22 to:192.168.1.130:3022 
    0     0 DNAT       udp  --  *      *       0.0.0.0/0            0.0.0.0/0           udp dpt:22 to:192.168.1.130:3022 

1 ответ1

1

Я не уверен, что понял вашу проблему, поэтому я не знаю, является ли правило трех iptables решением этой проблемы. Тем не менее, если говорить о трех правилах как таковых , вам не нужны первые два правила, вы можете заменить их одним правилом:

    iptables -I FORWARD -j ACCEPT

Третье правило действительно важно, но, к счастью, вам не нужен модуль conntrack для него. Я немного удивлен, что у Tomato нет обычного модуля.

Редактировать:

Глядя на вашу таблицу маршрутизации, мне кажется, что ваш интерфейс WAn (т. е. тот, который говорит с Интернетом, а не с вашей локальной сетью), является vlan2 . В этом случае ваше третье правило iptables должно быть:

   iptables -t nat -I POSTROUTING -o vlan2 -s 10.8.0.0/24 -j MASQUERADE

Если я ошибаюсь, просьба заменить имя интерфейса WAN на vlan2 .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .