LINUX.ORG.RU
ФорумAdmin

Iptables

 


0

1

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

Имеется 2 сетевые карты на моем ПК.

1 карта подключена к роутеру с интернетом.

2 карта подключена напрямую и будет использоваться для вирт.сервера.

Поставил сервер на VMware Workstation Pro 14 Centos 7.

Подключил провод к второй сетевой карте.

В настройках VMware для вирт.машины, выбрал 2 сетевую карту. Захожу на вирт.машину, создаю pppoe соединение, подключился, интернет есть, запустил необходимые службы, все работает из интернета службы видны.

Второй физический сервер располагается в другом городе, имеет прямое подключение к интернету (без pppoe), поставил Centos, запустил те же службы, все работает из интернета службы видны. Теперь необходимо, чтобы с физического сервера перенаправлялись запросы на вирт.сервер.

Конфигурация:

1 вирт.сервер имеет конфигурацию сети:

[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.55.4.184  netmask 255.255.255.192  broadcast 10.55.4.191
        inet6 fe80::1b2c:c69d:522e:beba  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:cd:92:3b  txqueuelen 1000  (Ethernet)
        RX packets 126351071  bytes 10576512821 (9.8 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 176185945  bytes 34057531043 (31.7 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 12649  bytes 1025324 (1001.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 12649  bytes 1025324 (1001.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ppp0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1492
        inet 91.188.116.198  netmask 255.255.255.255  destination 217.228.116.117
        ppp  txqueuelen 3  (Point-to-Point Protocol)
        RX packets 126285075  bytes 7793004231 (7.2 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 176168624  bytes 30180710885 (28.1 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
2 физический сервер имеет конфигурацию сети:
[root@localhost ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 52:54:00:8A:EF:8E
          inet addr:92.226.92.226  Bcast:92.226.95.255  Mask:255.255.252.0
          inet6 addr: fe80::5054:ff:fe8a:ef8e/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:555044 errors:0 dropped:0 overruns:0 frame:0
          TX packets:86459 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:35042486 (33.4 MiB)  TX bytes:154412410 (147.2 MiB)

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:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
Что я предпринимал: Создаю файл на вирт.сервере tun0.sh:
#!/bin/sh
/sbin/iptunnel del tun
/sbin/iptunnel add tun mode gre remote 92.226.92.226 local 91.188.116.198 ttl 225
/sbin/ifconfig tun 10.0.0.2/24
/sbin/ifconfig tun up
/sbin/ifconfig tun pointopoint 10.0.0.1
/sbin/ifconfig tun multicast
/sbin/ip route add 10.0.0.0/24 dev tun src 10.0.0.2 table table4
/sbin/ip route add table table4 default via 10.0.0.1 dev tun
/sbin/ip rule add from 10.0.0.2 table table4
/sbin/ip rule add fwmark 4 table table4
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -d 10.0.0.2 -p udp -m udp --dport 1999 -j CONNMARK --set-mark 4
iptables -t nat -A PREROUTING -d 10.0.0.2 -p udp -m udp --dport 1999 -j DNAT --to-destination 91.188.116.198:1999
iptables -t mangle -A OUTPUT -s 91.188.116.198 -p udp -j CONNMARK --restore-mark
Создаю на физическом сервер аналогичный файл
#!/bin/sh
/sbin/iptunnel del tun
/sbin/iptunnel add tun mode gre remote 91.188.116.198 local 92.226.92.226 ttl 225
/sbin/ifconfig tun 10.0.0.1/24
/sbin/ifconfig tun up
/sbin/ifconfig tun pointopoint 10.0.0.2
/sbin/ifconfig tun multicast
iptables -t nat -A PREROUTING -d 92.226.92.226 -p udp -m udp --dport 2999 -j DNAT --to-destination 10.0.0.2:1999
iptables -t mangle -A OUTPUT -p udp -s 92.226.92.226 -j CONNMARK --restore-mark
sysctl -w net.ipv4.ip_forward=1
Запускаю эти бантики на обеих серверах и пробую пинговать при вкл iptables. На вирт.сервере
[root@localhost ~]# ping 10.0.0.1
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
From 10.0.0.2 icmp_seq=2 Destination Host Unreachable
From 10.0.0.2 icmp_seq=3 Destination Host Unreachable
From 10.0.0.2 icmp_seq=4 Destination Host Unreachable
На физ.сервере
[root@localhost ~]# ping 10.0.0.2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
И висит бесконечно.

Если выкл iptables на обеих машинах то они пингуют друг друга, в чем может быть проблема?

Если надо еще какую информацию, спрашивайте, скину.


Ответ на: комментарий от mky
[0:0] -A INPUT -s 198.58.115.119/32 -d 91.188.116.198/32 -p udp -m udp --dport 1999 -j ACCEPT
[0:0] -A OUTPUT -s 91.188.116.198/32 -d 198.58.115.119/32 -p udp -m udp --sport 1999 -j ACCEPT

Вот такие рещультаты

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

При этом tcpdump на tun показывал пакеты от 198.58.115.119 и счётчики правил в -t nat PREROUTING увеличились? Правило в INPUT первое в цепочке?

Покажите, что у вас с rp-фильтром:

grep '.' /proc/sys/net/ipv4/conf/*/rp_filter

mky ★★★★★
()

На физ сервере

iptables -A PREROUTING -i eth0 -p udp -m udp --dport 1999 -j DNAT --to-destination 10.0.0.2
iptables -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j SNAT --to-source 91.188.116.198
iptables -A FORWARD -i tun0 -o eth0 -s 10.0.0.0/24 -j ACCEPT
iptables -A FORWARD -i eth0 -o tun0 -d 10.0.0.0/24 -j ACCEPT

Остальные правила удали.

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

Для чего? Со вторым сервером мы разобрались, пакеты идут до первого сервера, проблема с первым сервером, пакеты доходят со второго сервера на tun интерфейс и теряются.

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

Остальные правила удали.

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

Даже забавно, почему mky возится в этой каше. Может уже не за бесплатно?

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

Увеличиваются, если я делаю connect

Оставил пока попытки конектов, счетчик постоянно обновляются.

*nat
:PREROUTING ACCEPT [437042:22984736]
:INPUT ACCEPT [430483:22643537]
:OUTPUT ACCEPT [59948:3785389]
:POSTROUTING ACCEPT [59948:3785389]
[84:4452] -A PREROUTING -i tun -j CONNMARK --set-xmark 0x4/0xffffffff
[84:4452] -A PREROUTING -d 10.0.0.2/32 -p udp -m udp --dport 1999 -j DNAT --to-destination 91.188.116.198:1999
COMMIT
# Completed on Sat Jan  6 21:41:59 2018
grep '.' /proc/sys/net/ipv4/conf/*/rp_filter
[root@localhost ~]# grep '.' /proc/sys/net/ipv4/conf/*/rp_filter
/proc/sys/net/ipv4/conf/all/rp_filter:0
/proc/sys/net/ipv4/conf/default/rp_filter:1
/proc/sys/net/ipv4/conf/ens33/rp_filter:2
/proc/sys/net/ipv4/conf/gre0/rp_filter:1
/proc/sys/net/ipv4/conf/gretap0/rp_filter:1
/proc/sys/net/ipv4/conf/lo/rp_filter:0
/proc/sys/net/ipv4/conf/ppp0/rp_filter:1
/proc/sys/net/ipv4/conf/tun/rp_filter:0

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

Я наверно не допонял вашу схему.
Клиент обращается ко второму серверу (физическому), а обрабатывать их должен первый (витруальный). Или наоборот?

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

Клиент подключается ко второму серверу, второй сервер должен перенаправить запрос на виртуальный сервер.

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

Сейчас на данный момент, второй сервер перенаправляет запросы к вирт.серверу, а виртуальный сервер принимает, но запросы не поступают к службе которая запущена на 91.188.116.198:1999.

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

Все верно.

Тогда почему-бы не ограничиться для начала одним правилом DNAT?
Вон выше vodz писал, что остальное не нужно. Я то сеть настраивал полтора раза, и правила взял из гугла.

S_T_I_C_S
()
Ответ на: комментарий от People

Ну попробуйте ещё:

echo 0 > /proc/sys/net/ipv4/conf/default/rp_filter

А так только -j TRACE у iptables включать на входящие с tun пакеты. Но там в зависмости от версии ядра разные названия модуля...

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