LINUX.ORG.RU
ФорумAdmin

IP aliasing


0

2

Понадобилось переставить шлюзовой сервак. Случай следующего характера: Имеем диапазон внешних айпишников x.x.x.224/28 на внешнем интерфейсе. Прописаны ip-алиасы x.x.x.227-x.x.x.237. Настроен порт-форвардинг с этих алиасов в dmz. Из локалки пингуются внешние айпишники из диапазона, форвардинг портов работает. Снаружи картина противоположная, пингов нет, в прероутинг ничего не проходит. Таблицы роутингов, правил iptables идентичны, что на старом серваке, что и на новом. Сломал уже всю голову, пните в нужное русло.


Ответ на: комментарий от Rip

>скрипт с правилами iptables был перетянут 1 в 1

И интерфейсы одинаково называются?

Снаружи пингуем то не машинки в ДМЗ, а внешний интерфейс, форвард тут не причем. Либо iptables, либо у прова привязка по мак-адресам.

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

вот я и не понимаю почему не пингуются алиасные айпишники, основной шлюзовой пингуется. В iptables-aх разрешены в INPUT-e icmp на всех интерфейсах. Кстати да, спрошу у прова про привязку по макам.

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

да. входящие пакеты на интерфейсе присутствуют. дальше - тишина, никуда дальше не уходят, в прероутинг так же не попадают

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

ip -4 a:

3: eth3: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    inet x.x.x.226/28 brd x.x.x.239 scope global eth3
    inet x.x.x.227/28 brd x.x.x.239 scope global secondary eth3
    inet x.x.x.228/28 brd x.x.x.239 scope global secondary eth3
    inet x.x.x.229/28 brd x.x.x.239 scope global secondary eth3
    inet x.x.x.230/28 brd x.x.x.239 scope global secondary eth3
    inet x.x.x.231/28 brd x.x.x.239 scope global secondary eth3
    inet x.x.x.232/28 brd x.x.x.239 scope global secondary eth3
    inet x.x.x.233/28 brd x.x.x.239 scope global secondary eth3
    inet x.x.x.234/28 brd x.x.x.239 scope global secondary eth3
    inet x.x.x.235/28 brd x.x.x.239 scope global secondary eth3
    inet x.x.x.236/28 brd x.x.x.239 scope global secondary eth3
    inet x.x.x.237/28 brd x.x.x.239 scope global secondary eth3

ip l:

3: eth3: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 00:27:0e:13:76:1b brd ff:ff:ff:ff:ff:ff

и что именно показать из iptables-save, ибо конторский сервак, а не домашняя тачка :) ?

ЗЫ. сетевой кабель соответственно из сетевухи достан, ибо контора не может без инета обходиться
Rip
() автор топика
Ответ на: комментарий от anton_jugatsu

выдержки из iptables-save

DNAT:

-A PREROUTING -d x.x.x.230/32 -p tcp -m tcp --dport 5222 -j DNAT --to-destination 192.168.20.102:5222
-A PREROUTING -d x.x.x.230/32 -p tcp -m tcp --dport 5223 -j DNAT --to-destination 192.168.20.102:5223
-A PREROUTING -d x.x.x.230/32 -p tcp -m tcp --dport 5269 -j DNAT --to-destination 192.168.20.102:5269
-A PREROUTING -d x.x.x.230/32 -p tcp -m tcp --dport 5280 -j DNAT --to-destination 192.168.20.102:5280 

FORWARD:

-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.20.0/24 -i eth1 -o eth3 -j ACCEPT
-A FORWARD -d 192.168.20.0/24 -i eth3 -o eth1 -j ACCEPT 

eth1 - DMZ

дистр - арчъ

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

Очень странно, смотри в сторону udev, почему у тебя два (судя по ip l) интерфейса с названием eth3.

eth3 - WAN

Какой интерфейс в локалке. Покажи ip ro

Ах, да, забыл про SNAT, выложи. Какая политика на FORWARD, DROP ли ACCEPT? Сделай iptables -F FORWARD, всё равно у тебя разрешено всё.

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

Очень странно, смотри в сторону udev, почему у тебя два (судя по ip l) интерфейса с названием eth3.

не увидел 2 интерфейса eth3. udev разруливает интерфейсы по местам в зависимости от маков, иначе начинаются шахматы.

eth0 - LAN
eth1 - DMZ
eth2 - линк на adsl-модем
eth3 - WAN1
eth4 - WAN2

ip ro:

10.10.0.0/16 dev eth0  proto kernel  scope link  src 10.10.1.1 
192.168.1.0/24 dev eth2  proto kernel  scope link  src 192.168.1.2 
192.168.20.0/24 dev eth1  proto kernel  scope link  src 192.168.20.1 
y.y.y.y/28 dev eth4  proto kernel  scope link  src y.y.y.y 
x.x.x.224/28 dev eth3  proto kernel  scope link  src x.x.x.226

SNAT:

-A POSTROUTING -s 192.168.20.102/32 -o eth1 -j SNAT --to-source 192.168.20.1
-A POSTROUTING -o eth3 -j SNAT --to-source x.x.x.226

192.168.20.1 - eth1 (DMZ)

политика на FORWARD - ACCEPT

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

>да. входящие пакеты на интерфейсе присутствуют

Т.е. если пингуешь из вне какой-либо алиас, то tcpdump видит входящие?

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

Положим, что у тебя не настроено никакого сложного роутинга для двух провов средствами iproute, тогда:

1. Включить ip_forward

2. Назначить ip-адрес на интерфейс eth3, которым будет снатится. (x.226)

3. Прописать маршруты на x.x.x.224/28 (у тебя есть)

4. Удалить

-A POSTROUTING -s 192.168.20.102/32 -o eth1 -j SNAT --to-source 192.168.20.1

5. Сделать DNAT на основании адреса получателя -d x.x.x.x/28

6. Проверить работу, должно работать, зуб даю на отсечение...)

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

5. Сделать DNAT на основании адреса получателя -d x.x.x.x/28

может всетаки SNAT?

касательно п.6 - не помогло, картина старая

tcpdump -i eth3:

tcpdump -i eth3 host z.z.z.z -n
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth3, link-type EN10MB (Ethernet), capture size 65535 bytes
14:28:16.626505 IP z.z.z.z.44017 > x.x.x.230.5222: Flags [R], seq 4024126087, win 64614, length 0
14:28:17.644962 IP z.z.z.z.59666 > x.x.x.230.5222: Flags [S], seq 4110377568, win 64614, options [mss 1430,sackOK,TS val 344999679 ecr 0,nop,wscale 1], length 0
14:28:18.840193 IP z.z.z.z.59666 > x.x.x.230.5222: Flags [S], seq 4110377568, win 64614, options [mss 1430,sackOK,TS val 344999794 ecr 0,nop,wscale 1], length 0
14:28:21.067308 IP z.z.z.z.59666 > x.x.x.230.5222: Flags [S], seq 4110377568, win 64614, options [mss 1430,sackOK,TS val 345000021 ecr 0,nop,wscale 1], length 0
iptables -L -v -t nat
Chain PREROUTING (policy ACCEPT 3899 packets, 286K bytes)
    0     0 DNAT       tcp  --  *      *       0.0.0.0/0            x.x.x.230      tcp dpt:5222 to:192.168.20.102:5222
Rip
() автор топика
Ответ на: комментарий от lvi

А правильно алиасы подняты? scope global secondary eth3:0 (3:1.....) должно.

cat /etc/network.d/sunlink-gw 
CONNECTION='ethernet'
DESCRIPTION='SunLink gateway'
INTERFACE='eth3'
IP='static'
ADDR='x.x.x.226'
NETMASK='255.255.255.240'
GATEWAY='x.x.x.225'

POST_UP='for i in 227 228 229 230 231 232 233 234 235 236 237 ; do ip addr add x.x.x.$i/255.255.255.240 brd x.x.x.239 dev eth3 ; done'
PRE_DOWN='for i in 227 228 229 230 231 232 233 234 235 236 237 ; do ip addr del x.x.x.$i/255.255.255.240 dev eth3 ; done'
Rip
() автор топика
Ответ на: комментарий от Rip

GETEWAY в интерфейсе прописан, а попробовать.

ip route add default via xxx.xxx.xxx.225

Так они пингуются с наружи или нет, дамп не пинговый?

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

дык

ip route show |grep default:
default via x.x.x.225 dev eth3

дамп не пинговый, снаружи телнет на хост-порт - telnet x.x.x.230 5222

еще раз. пингуется снаружи только сам интерфейс eth3 (x.x.x.226). алиасы не пингуются снаружи, но пингуются из локалки.

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

>пингуется снаружи только сам интерфейс eth3 (x.x.x.226). алиасы не пингуются

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

Можно пинговать с наружи то-же xxx.xxx.xxx.230 и смотреть на какой мак приходят пакеты, он ли?

tcpdump -eni eth3 host xxx.xxx.xxx.230

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

После всех этих непонятностей решил проделать эксперимент. Вставил в сервак USB-сетевуху. Из скрипта поднятия eth3 выкинул поднятие алиасов. Их больше нет. USB-сетевухе присвоил адрес x.x.x.228. Соответственно на сетевых интерфейсах имеем 2 адреса (физических) - x.x.x.226 и x.x.x.228. Снаружи пинги на эти адреса стали ходить. И что самое интересное (!!!) все заработало, весь прероутинг на остальные _непрописанные_ адреса, за исключением соответственно пингов, ибо физически насколько я понимаю интерфейсов нет.

А вот теперь вопрос - КАК это все работает? Неужели провайдеру нужен был любой другой мак из моего пула адресов? И как все это сейчас работает без прописания айпишников и алиасов? Я что-то упустил за последнее время? Или в iproute2 работа с сетевыми интерфейсами поменялась?

ЗЫ. iptables-ы были какбы не при чем :)

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

Ну что маки одинаковые, - это нормально. У меня алиасы поднимаются по-другому, на каждый IP, - свой итерфейс (eth1, eth1:0 ...), выглядит так:
2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 100
inet xxx.xxx.xxx.82/28 brd xxx.xxx.xxx.95 scope global eth1
inet xxx.xxx.xxx.84/28 brd xxx.xxx.xxx.95 scope global secondary eth1:0

Если у двух серверов все совершенно одинаково, одинаково поднимаются интерфейсы, NAT'ы, фильтры и все истальное, а ведут себя поразному, разница может быть в конфигурации sysctl.

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