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

Маршрутизация на основе портов Linux с использованием iptables / ip route

У меня следующая установка:

192.168.0.4        192.168.0.6      192.168.0.1
+-----------+      +---------+      +----------+
|WORKSTATION|------|  LINUX  |------| GATEWAY  |
+-----------+      +---------+      +----------+
                   192.168.150.10
                        |
                   192.168.150.9
                   +---------+
                   |   VPN   |
                   +---------+
                   192.168.150.1

WORKSTATION имеет маршрут по умолчанию 192.168.0.6 LINUX имеет маршрут по умолчанию 192.168.0.1

Я пытаюсь использовать шлюз в качестве маршрута по умолчанию, но маршрутизирую трафик порта 80 через VPN. Основываясь на том, что я читал на http://www.linuxhorizon.ro/iproute2.html Я пробовал это:

echo "1 VPN" >> /etc/iproute2/rt_tables
sysctl net.ipv4.conf.eth0.rp_filter = 0
sysctl net.ipv4.conf.tun0.rp_filter = 0
sysctl net.ipv4.conf.all.rp_filter = 0

iptables -A PREROUTING -t mangle -i eth0 -p tcp --dport 80 -j MARK --set-mark 0x1
ip route add default via 192.168.150.9 dev tun0 table VPN
ip rule add from all fwmark 0x1 table VPN

Когда я запускаю «tcpdump -i eth0 port 80» в LINUX и открываю веб-страницу на WORKSTATION, я вообще не вижу, как трафик проходит через LINUX. Когда я запускаю команду ping из WORKSTATION, я получаю это из некоторых пакетов:

92 bytes from 192.168.0.6: Redirect Host(New addr: 192.168.0.1)
Vr HL TOS  Len   ID Flg  off TTL Pro  cks      Src      Dst
 4  5  00 0054 de91   0 0000  3f  01 4ed3 192.168.0.4  139.134.2.18

Это почему моя маршрутизация не работает? Нужно ли мне размещать GATEWAY и LINUX в ​​разных подсетях, чтобы предотвратить перенаправление WORKSTATION на GATEWAY? Нужно ли мне вообще использовать NAT, или я могу сделать это только с маршрутизацией (а это то, что я хочу)?

«LINUX» сообщает «WORKSTATION» использовать «GATEWAY» вместо себя, потому что они находятся в одной подсети. Это может работать только в том случае, если вы настроили мост на «LINUX» (см. Brctl (8)), и если вы это сделали, «WORKSTATION» должна использовать «GATEWAY» в своем маршруте по умолчанию.

Убедитесь, что вы используете подсеть для каждого широковещательного домена, широковещательные пакеты никогда не маршрутизируются, поэтому вам нужна другая подсеть на всех трех интерфейсах «LINUX» (вы можете использовать / 30s, но я рекомендую придерживаться / 24s для роста). или пусть это соединит их. Вероятно, вам также следует настроить отдельную подсеть для самой VPN.

Затем добавьте подсеть VPN в таблицу VPN, например:

ip route add 192.168.150.0/24 dev tun0 scope link table VPN proto static

Чтобы использовать эту таблицу, добавьте следующее правило маршрутизации:

ip rule add fwmark 1 lookup VPN priority 500

И посмотрите, сможете ли вы маршрутизировать пакеты через "VPN" и "GATEWAY", прежде чем добавлять какие-либо правила fwmark, на всякий случай.

И я не думаю, что отключение фильтра обратного пути полезно.

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

Перенаправление, которое происходит, когда Linux (192.168.0.6) сообщает рабочей станции (192.168.0.4) об использовании шлюза (192.168.0.1), можно отключить, внеся следующие изменения в файл /etc/sysctl.conf на сервере Linux. :

net.ipv4.conf.all.send_redirects = 1