Я настроил OpenWRT в виртуальной машине, которая действует как маршрутизатор. Имеет два сетевых интерфейса:
Я также установил виртуальную машину DamnSmallLinux (DSL) с одним сетевым интерфейсом:
Эта настройка означает, что DSL подключается к Интернету через OpenWRT.
Теперь OpenWRT создает устройство tun, подключенное к VPN:
/*tun device on OpenWRT*/
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.130.3.45 P-t-P:10.128.0.1 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:494 errors:0 dropped:0 overruns:0 frame:0
TX packets:494 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:41496 (40.5 KiB) TX bytes:41496 (40.5 KiB)
Я могу проверить, подключен ли я к VPN, выполнив пинг шлюза vpn10.128.0.1
:
/*Ping VPN on OpenWRT*/
PING 10.128.0.1 (10.128.0.1): 56 data bytes
64 bytes from 10.128.0.1: seq=0 ttl=64 time=12.364 ms
64 bytes from 10.128.0.1: seq=1 ttl=64 time=13.326 ms
По умолчанию DSL не может пинговать 10.128.0.1
.
Если я добавлю следующее правило в брандмауэр OpenWRT, тогда DSL жестяная банка пинг 10.128.0.1
/*Zone rule for VPN, enables DSL to ping 10.128.0.1*/
config zone
option input 'ACCEPT'
option forward 'REJECT'
option output 'ACCEPT'
option name 'vpn'
option masq '1'
option network 'VPN'
Теперь я хочу проложить маршрут все трафик из DSL через VPN, но я не знаю, что делать. Я пробовал добавить следующий маршрут в /etc/config/network
файл на OpenWRT:
/*Directs all traffic to tun0 but VPN does not reply.*/
config route
option interface 'VPN'
option target '0.0.0.0'
option netmask '0.0.0.0'
option gateway '10.128.0.1'
Когда я делаю tcpdump
из tun0
после добавления этого маршрута действительно кажется, что весь трафик направляется в VPN, проблема в том, что я не получаю от него никаких ответов.
Кто-нибудь знает, как правильно перенаправить весь трафик в VPN?
редактировать
OpenWRT ifconfig:
root@OpenWrt:~# ifconfig
br-lan Link encap:Ethernet HWaddr 08:00:27:0E:CF:19
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fd93:d43b:534d::1/60 Scope:Global
inet6 addr: fe80::a00:27ff:fe0e:cf19/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:130 errors:0 dropped:0 overruns:0 frame:0
TX packets:139 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:10392 (10.1 KiB) TX bytes:15306 (14.9 KiB)
eth0 Link encap:Ethernet HWaddr 08:00:27:0E:CF:19
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:152 errors:0 dropped:0 overruns:0 frame:0
TX packets:140 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:14368 (14.0 KiB) TX bytes:15632 (15.2 KiB)
eth1 Link encap:Ethernet HWaddr 08:00:27:78:6B:EE
inet addr:10.0.3.15 Bcast:10.0.3.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe78:6bee/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:246 errors:0 dropped:0 overruns:0 frame:0
TX packets:275 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:33158 (32.3 KiB) TX bytes:32283 (31.5 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:65 errors:0 dropped:0 overruns:0 frame:0
TX packets:65 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:5164 (5.0 KiB) TX bytes:5164 (5.0 KiB)
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.130.3.45 P-t-P:10.128.0.1 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:57 errors:0 dropped:0 overruns:0 frame:0
TX packets:57 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:4788 (4.6 KiB) TX bytes:4788 (4.6 KiB)
OpenWRT имеет все интерфейсы, которые ему нужны (и, следовательно, маршрут), чтобы иметь возможность пинговать удаленный gw (10.128.0.1). И похоже, что VPN отвечает. хорошо.
Теперь на DSL вам нужно добавить маршрут: 10.128.0.X / 24 (или 10.X / 8? В зависимости от того, что вы настроили на пульте дистанционного управления ... настройте по мере необходимости), со шлюзом 10.130.3.45 (то есть OpenWRT, который является «шлюзом», через который вам нужно пройти, чтобы достичь сети 10.128.x). Локальная сеть может получить доступ к другой локальной сети только через шлюз, используя IP-адрес локальной сети этого шлюза, поскольку это единственное, к чему может получить доступ локальный компьютер: любые IP-адреса в своих (одной или нескольких) локальных сетях. Кажется, вы напрямую помещаете удаленный IP-адрес в DSL, но DSL не знает, как до него добраться. Вероятно, он по умолчанию отправляет его на свой «шлюз по умолчанию», которым может быть интернет-маршрутизатор или что-то еще, но, по-видимому, не OpenWRT (или, по крайней мере, не интерфейс OpenWRT 10.130.3.45, тот, который подключается к сети 10.X)
Возможно, я читал по диагонали.
Но в двух словах:
поместите себя в пакет и действуйте так, как будто вы хотите добраться до пункта назначения, шаг за шагом:
вам нужно найти «ближайший» маршрут (или, если его нет, выбрать маршрут по умолчанию), чтобы перейти к следующему переходу.
Продолжайте, как этот переход за шагом (вперед, а также назад), и вскоре вы обнаружите, какой из переходов не имеет необходимого шага для перехода к следующему шагу (или, может быть, идет не на тот шаг)
то есть:
Я получаю ping-пакет от DSL. мой источник - DSL-ip. Мой пункт назначения - a.b.c.d (наверное, 10.128.0.1).
Я смотрю на таблицу ROUTE и выбираю пункт назначения, который наиболее точно соответствует abcd (т.е. между 0.0.0.0/0 (defautl gw), 10.0.0.0/8 (с gw 10.130.3.45) и специальным 10.128.0.x (с gw 10.120.3.45), я выбрал самую последнюю, поскольку она более точна, т.е. больше "битов" соответствует моему месту назначения).
Итак, я выбираю этот маршрут и еду на 10.130.3.45. (если мой локальный брандмауэр позволяет это)
Теперь я отправляю ping-пакет с источником «....» (может измениться из-за SNAT) и местом назначения «.....» (может измениться из-за DNAT). И смотрю таблицу маршрутизации ...
Вам, конечно, также понадобится пересылка iptables, чтобы вы могли перейти к следующему переходу (и с правилами, которые устанавливают соединения, позволяя, таким образом, возвращаться и ответным пакетам.
Не разрешайте оба направления, это откроет вашу локальную сеть для всего, что поступает из VPN, а не только для установленных соединений!) - Оливье Дюлак только что отредактировал