Есть gateway, задача такая, при обращении на внешний порт, пробрасывать его на внутренний сервер.
Написали так:
IPTABLES -t nat -A PREROUTING -i IN_INET1 -p tcp --dport 1005 -j DNAT --to-destination 192.168.0.60:1010
IPTABLES -t nat -A POSTROUTING -d 192.168.0.60 -j SNAT --to-source IP_GW_SERVIPTABLES -t filter -A FORWARD -d 192.168.0.60 -i IN_INET1 -o LAN_IN -p tcp --dport 1010 -j ACCEPT
Такая комбинация работает, если default route лежит через интерфейс IN_INET1
Но у нас несколько входящих каналов.
Просто дублируем правила и получается что так, входящие пакеты работают только на том интерфейсе где default route
>Но у нас несколько входящих каналов.
>>Но у нас несколько входящих каналов.
>
>http://opennet.ru/tips/info/2009.shtmlне будет оно работать, уходить то всегда будет через дефолт, единственное решение насколько знаю, это создание промежуточных шлюзов с соответствующей маршрутизацией
>>>Но у нас несколько входящих каналов.
>>
>>http://opennet.ru/tips/info/2009.shtml
>
>не будет оно работать, уходить то всегда будет через дефолт, единственное решение
>насколько знаю, это создание промежуточных шлюзов с соответствующей маршрутизациейhttp://www.opennet.me/tips/info/1651.shtml
У внутреннего сервера, на который осуществляется проброс, должен быть либо один интерфейс и один шлюз, на котором настраивается трекинг соединений с привязкой (маркировкой) соединения к интерфейсу/провайдеру,
либо на самом сервере есть несколько интерфейсов, и тогда маркировку соединений следует делать уже на нём. Если необходимо, то на вышестоящих, по отношению к серверу, маршрутизаторах делается проброс портов. Маркировка соединений тем не менее, делается на самом сервере, и на нем же определяется, какому вышестоящему маршрутизатору отмаршрутизировать ответ. Читайте http://www.opennet.me/tips/info/1651.shtml .
Я имел ввиду эту реализациюДва шлюза в Интернет и NAT
http://www.xgu.ru/wiki/%D0%94%D0%B2%...
GW1 GW2
* *
| |
IP1 | | IP2
[eth3] | | [eth4]
+-------+
| |
| gw |
| |
+-------+
10.0.3.250 | 10.0.3.254
[eth1] | [eth2]
|
|
10.0.3.249 | 10.0.3.253
[eth1.1] | [eth2.1]
+-------+
| |
| pgw |
| |
+-------+
| 10.0.3.6
| [eth0]
|Вот только вопрос, можно ли в таком случае gw и pgw размещать на одной физической машине?
>Я имел ввиду эту реализацию
>
>Два шлюза в Интернет и NAT
>
>http://www.xgu.ru/wiki/%D0%94%D0%B2%...
>
>Вот только вопрос, можно ли в таком случае gw и pgw размещать
>на одной физической машине?мм, сходу не понятно, какие порты с каких адресов куда (на какой адрес) пробрасываются.
As for me, можно пробросить с маршрутизатора с тремя интерфейсами (два внешних и один внутренний) во внутреннюю сетку без проблем, с использованием маркировки соединений на этом самом маршрутизаторе и без использования дополнительных маршрутизаторов, о чем можно почитать в заметке по ссылке в моем сообщении выше.
Что-то у меня так и не получается сделать желаемое.
Задача пробросить порт внутрь локальной сети и ответ вернуть по тому же каналу с которого пришел
Делаю так:iptables -t nat -A PREROUTING -i eth1 -p tcp -j CONNMARK --set-mark 0x1
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 1005 -j DNAT --to-destination 192.168.0.50:1010
iptables -t nat -A PREROUTING -i eth2 -p tcp -j CONNMARK --set-mark 0x2
iptables -t nat -A PREROUTING -i eth2 -p tcp --dport 1005 -j DNAT --to-destination 192.168.0.50:1010
iptables -t nat -A PREROUTING -i eth3 -p tcp -j CONNMARK --set-mark 0x3
iptables -t nat -A PREROUTING -i eth3 -p tcp --dport 1005 -j DNAT --to-destination 192.168.0.50:1010iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth3 -j MASQUERADEiptables -t nat -A POSTROUTING -d 192.168.0.50 -j SNAT --to-source 192.168.0.20
iptables -t mangle -A OUTPUT -s 192.168.0.8 -j CONNMARK --restore-mark
ip rule add fwmark 0x1 table prov1
ip rule add fwmark 0x2 table prov2
ip rule add fwmark 0x3 table prov3ip route add default via 194.185.159.55 table prov1
ip route add default via 125.124.141.35 table prov2
ip route add default via 133.135.131.151 table prov3Все равно пакеты идут только там где default route
# ip route flush cacheвыполнял?
> iptables -t nat -A POSTROUTING -d 192.168.0.50 -j SNAT --to-source 192.168.0.20\
а зачем это правило?
>[оверквотинг удален]
>Делаю так:
>ip rule add fwmark 0x1 table prov1
>ip rule add fwmark 0x2 table prov2
>ip rule add fwmark 0x3 table prov3
>
>ip route add default via 194.185.159.55 table prov1
>ip route add default via 125.124.141.35 table prov2
>ip route add default via 133.135.131.151 table prov3
>
>Все равно пакеты идут только там где default routeПока вы не будете проверять, как выполняются команды, и к каким результатам, к каким изменениям в конфигурации, они приводят - ничего у вас так и не получится.
Статью вы так и не осилили прочитать.
А там много раз было приведено - "ip ru sh".
Читайте еще раз.
Уже несколько раз перечитать статью, и много других.
Уже пошел другим способом.
Все по минимуму.iptables -t nat -A PREROUTING -p tcp --dport 1005 -d $my_inet_ip -j CONNMARK --set-mark 2
iptables -t nat -A PREROUTING -p tcp -d my_inet_ip --dport 1005 -j DNAT --to-destination 192.168.0.60:1010from all fwmark 0x2 lookup T1
ip route add default via $prov_gate table T1iptables -t nat -A POSTROUTING -o $inet_interface -j MASQUERADE
И все равно в упор коннект из вне на порт 1005 никчему не приводит.
Еще и руководство сверху давит когда закончу.
Помогите плиз, разжуйте неуку.
Всё у вас правильно, ошибочна только эта строчка
> iptables -t mangle -A OUTPUT -s 192.168.0.8 -j CONNMARK --restore-markПравильно будет
iptables -t mangle -A PREROUTING -s 192.168.0.8 -j CONNMARK --restore-mark
потому что метка соединения должна быть восстановлена до совершения роутинга.