LINUX.ORG.RU
ФорумAdmin

Трафик идет через другой интерфейс

 ,


0

1

Добрый день Подскажите, пожалуйста, реализовал схему https://docs.google.com/drawings/d/103CDDg39ZK4vDCkxXTNuLmP8FkTCsXrkOrJQLXJCo9A/edit?usp=sharing Вопрос в том что трафик попадает на сервер А1, а вот назад уходит через сервер В, сетевуху которая в инет смотрит, а не через tun0. Никак не могу заставить ходить трафик через тун0 (((((

Сервер А

 $ ip -br a
lo               UNKNOWN        127.0.0.1/8 ::1/128
enp3s0           UP
enp4s0           UP             fe80::523e:aaff:fe0f:b42e/64
br0              UP             192.168.1.250/24 fe80::523e:aaff:fe0f:5b3a/64
tun0             UNKNOWN        192.168.37.6 peer 192.168.37.5/32 fe80::8e28:78a4:5790:69d/64
ppp0             UNKNOWN        10.102.212.208 peer 212.115.225.252/32


cat /root/iptables-save
# Generated by xtables-save v1.8.2 on Mon Aug  2 13:27:21 2021
*filter
:INPUT ACCEPT [224462:89460370]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1891438:17633064469]
-A INPUT -i lo -j ACCEPT
-A INPUT -i br0 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 3 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -i ppp+ -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -j ACCEPT
-A FORWARD -p gre -j ACCEPT
-A FORWARD -i ppp+ -p tcp -m tcp --dport 1723 -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -o br0 -j ACCEPT
-A OUTPUT -o ppp+ -j ACCEPT
COMMIT
# Completed on Mon Aug  2 13:27:21 2021
# Generated by xtables-save v1.8.2 on Mon Aug  2 13:27:21 2021
*mangle
:PREROUTING ACCEPT [109308441:89142826756]
:INPUT ACCEPT [18379765:5806615294]
:FORWARD ACCEPT [90724716:83285475718]
:OUTPUT ACCEPT [18242790:44296639842]
:POSTROUTING ACCEPT [108967461:127582111444]
-A FORWARD -o ppp0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:65495 -j TCPMSS --clamp-mss-to-pmtu
COMMIT
# Completed on Mon Aug  2 13:27:21 2021
# Generated by xtables-save v1.8.2 on Mon Aug  2 13:27:21 2021
*nat
:PREROUTING ACCEPT [613300:96555373]
:INPUT ACCEPT [50547:3531885]
:POSTROUTING ACCEPT [11702:712235]
:OUTPUT ACCEPT [49777:3344265]
-A PREROUTING -p tcp -m tcp --dport 8080 -j DNAT --to-destination 192.168.1.212:80
-A PREROUTING -p tcp -m tcp --dport 4113 -j DNAT --to-destination 192.168.1.213:3389
-A POSTROUTING -o ppp+ -j MASQUERADE
COMMIT
# Completed on Mon Aug  2 13:27:21 2021
# Generated by xtables-save v1.8.2 on Mon Aug  2 13:27:21 2021
*raw
:PREROUTING ACCEPT [109308441:89142826756]
:OUTPUT ACCEPT [18242790:44296639842]
COMMIT
# Completed on Mon Aug  2 13:27:21 2021

Сервер В

$ ip -br a
lo               UNKNOWN        127.0.0.1/8
enp1s0           UP
enp2s0           UP
enp5s0           UP
br0              UP             192.168.88.250/24
tun0             UNKNOWN        192.168.37.1 peer 192.168.37.2/32
virbr0           DOWN           192.168.122.1/24
virbr0-nic       DOWN
ppp0             UNKNOWN        178.215.163.222 peer 212.115.225.247/32


cat /root/iptables-save
# Generated by xtables-save v1.8.2 on Mon Aug  2 13:30:02 2021
*filter
:INPUT ACCEPT [13175311:18281448869]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [6478397:343261269]
:f2b-ssh - [0:0]
:f2b-sshd - [0:0]
-A INPUT -i virbr0 -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -i virbr0 -p udp -m udp --dport 67 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport 67 -j ACCEPT
-A INPUT -p tcp -m multiport --dports 22 -j f2b-sshd
-A INPUT -p tcp -m multiport --dports 22 -j f2b-ssh
-A INPUT -i lo -j ACCEPT
-A INPUT -i br0 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 3 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -i ppp+ -j ACCEPT
-A FORWARD -d 192.168.122.0/24 -o virbr0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.122.0/24 -i virbr0 -j ACCEPT
-A FORWARD -i virbr0 -o virbr0 -j ACCEPT
-A FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -j ACCEPT
-A OUTPUT -o virbr0 -p udp -m udp --dport 68 -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -o br0 -j ACCEPT
-A OUTPUT -o ppp+ -j ACCEPT
-A f2b-ssh -s 190.52.34.43/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-ssh -s 111.93.214.67/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-ssh -s 160.119.100.188/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-ssh -s 40.115.79.44/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-ssh -s 118.69.55.101/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-ssh -s 49.233.196.120/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-ssh -j RETURN
-A f2b-sshd -s 190.52.34.43/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-sshd -s 111.93.214.67/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-sshd -s 160.119.100.188/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-sshd -s 40.115.79.44/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-sshd -s 118.69.55.101/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-sshd -s 49.233.196.120/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-sshd -j RETURN
COMMIT
# Completed on Mon Aug  2 13:30:02 2021
# Generated by xtables-save v1.8.2 on Mon Aug  2 13:30:02 2021
*mangle
:PREROUTING ACCEPT [885207781:629345695425]
:INPUT ACCEPT [34007551:37639326371]
:FORWARD ACCEPT [849792347:591467489037]
:OUTPUT ACCEPT [21225980:16299778485]
:POSTROUTING ACCEPT [871019988:607767611018]
-A FORWARD -o ppp0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:65495 -j TCPMSS --clamp-mss-to-pmtu
-A POSTROUTING -o virbr0 -p udp -m udp --dport 68 -j CHECKSUM --checksum-fill
COMMIT
# Completed on Mon Aug  2 13:30:02 2021
# Generated by xtables-save v1.8.2 on Mon Aug  2 13:30:02 2021
*nat
:PREROUTING ACCEPT [7669950:996289342]
:INPUT ACCEPT [3030301:201364782]
:POSTROUTING ACCEPT [24907:1747289]
:OUTPUT ACCEPT [44874:3417857]
-A PREROUTING -p tcp -m tcp --dport 8443 -j DNAT --to-destination 192.168.88.200:443
-A PREROUTING -p tcp -m tcp --dport 8080 -j DNAT --to-destination 192.168.88.200:80
-A PREROUTING -p tcp -m tcp --dport 3030 -j DNAT --to-destination 192.168.88.241:3389
-A PREROUTING -i ppp+ -p tcp -m tcp --dport 9191 -j DNAT --to-destination 192.168.1.212:22
-A POSTROUTING -s 192.168.122.0/24 -d 224.0.0.0/24 -j RETURN
-A POSTROUTING -s 192.168.122.0/24 -d 255.255.255.255/32 -j RETURN
-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535
-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p udp -j MASQUERADE --to-ports 1024-65535
-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -j MASQUERADE
-A POSTROUTING -o ppp+ -j MASQUERADE
COMMIT
# Completed on Mon Aug  2 13:30:02 2021

одним iptables это не сделать.

нужно использовать policy routing совместно с conntrack.

Аналогичные варианты обсуждались здесь много раз.

vel ★★★★★
()
Ответ на: комментарий от vel

Спасибо большое, разобрался! Очень помогло! Спасибо!

darksmoke
() автор топика
Ответ на: комментарий от vel

Не совсем разобрался. В офисе тогда не работает интернет или работает выборочно как-то :( Сделал так На сервере А

ip route add default via 192.168.37.5 table 120
ip rule add from 192.168.1.212 table 120
ip rule add from 192.168.1.213 table 120
ip rule add from 192.168.1.241 table 120

На сервере В

$IPT -t nat -A PREROUTING -i ppp+ -p tcp --dport 4113 -j DNAT --to-destination 192.168.1.213:3389
$IPT -t nat -A PREROUTING -i ppp+ -p tcp --dport 4343 -j DNAT --to-destination 192.168.1.250:443
$IPT -t nat -A PREROUTING -i ppp+ -p tcp --dport 9998 -j DNAT --to-destination 192.168.1.241:22
$IPT -t nat -A PREROUTING -i ppp+ -p tcp --dport 10050 -j DNAT --to-destination 192.168.1.212:10050
$IPT -t nat -A PREROUTING -i ppp+ -p tcp --dport 10051 -j DNAT --to-destination 192.168.1.212:10051
$IPT -t nat -A PREROUTING -i ppp+ -p tcp --dport 11050 -j DNAT --to-destination 192.168.1.212:11050

Т.е. все классно работает для меня, я попадаю на домашний сервер А. Но при такой схеме офис страдает, работают через один

darksmoke
() автор топика
Ответ на: комментарий от darksmoke

В офисе ничего дополнительно настраивать не надо. Настраивать нужно только домашнюю машину.

Проблема в том, что пакет пришедший из инета на сервер В, пройдя через NAT попадает в впн, а затем попадет на домашние адреса и чтобы соединение установилось, нужно чтобы ответ был отправлен через впн на сервер В, где NAT его правильно отработает.

Судя по наличию проблем, на твоей машине (А) dgw (шлюз по умолчению) смотрит не в впн.

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

0: from all lookup local

а далее

1: from all lookup main suppress_prefixlength 0

и только после этого можно добавлять специфические правила.

После них обязательно должно быть правило с просмотром таблицы с dgw, иначе будут проблемы с локально генерируемыми пакетами.

Есть корректный способ отправлять ответы на пакеты пришедшие через впн назад в впн.

1. пакеты пришедшие через впн маркируем (-j MARK), а так же маркируем соединение (-j CONNMARK --save-mark) если у соединения еще нет метки, а пакет имеет метку.

2. для всех исходящих пакетов проверяем метку соединения и при наличии ее ставим метку пакету (-j CONNMARK --restore-mark), а дальше используя правила маршрутизации отправляем маркированные пакеты в впн (через дополнительную таблицу маршрутизации, в которой только dgw).

Это единственный способ сделать маршрутизацию с точностью до соедиения.

vel ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.