PDA

Bekijk de volledige versie : Static NAT



RET
09-03-2009, 17:59
Можно ли на WL-500gP настроить NAT таким образом чтобы один внутриний айпишник из LAN натился в определенный внешний айпиншник?
Например весь LAN 192.168.1.0/24 натится в 1.1.1.1, и только 192.168.1.100/24 натится в 1.1.1.2

vectorm
09-03-2009, 19:48
Можно ли на WL-500gP настроить NAT таким образом чтобы один внутриний айпишник из LAN натился в определенный внешний айпиншник?
Например весь LAN 192.168.1.0/24 натится в 1.1.1.1, и только 192.168.1.100/24 натится в 1.1.1.2
Да, iptables в помощь.

RET
09-03-2009, 20:01
Да, iptables в помощь.
Ну это то понятно, хотелось бы посмотреть примерные конфиги

Less
09-03-2009, 20:45
Ну если понятно то читаем МАН http://iptables-tutorial.frozentux.net/



iptables -t nat -A POSTROUTING -s 192.168.1.100/32 -o vlan7 -j SNAT --to-source 1.1.1.2
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o vlan7 -j SNAT --to-source 1.1.1.1


Забыл добавить 1-е правило для конкретных IP-адресов только потом пля подсети.

RET
10-03-2009, 18:42
Прописал, но всё равно пакеты от 192.168.1.100/32 уходят в инет с source адресом 1.1.1.1 а не 1.1.1.2 как надо. Адрес 1.1.1.2 повесил алиасом на интерфейс vlan1. Может ещё надо что то прописать?

Less
10-03-2009, 18:46
Покажыте вывод

iptables -L -nvt nat

2bars
10-03-2009, 19:03
маскарад убери который там по умолчанию

RET
10-03-2009, 19:20
вот, только 192.168.1.0 в реальности 172.16.22.0

Chain PREROUTING (policy ACCEPT 5619 packets, 334K bytes)
pkts bytes target prot opt in out source destination
0 0 DNAT tcp -- vlan1 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:6100 to:172.16.22.5:7777
0 0 DNAT tcp -- vlan1 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:6000 to:172.16.22.44:8888
0 0 DNAT tcp -- vlan1 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:5900 to:172.16.22.14:9999
3650 190K VSERVER all -- * * 0.0.0.0/0 1.1.1.1

Chain POSTROUTING (policy ACCEPT 1243 packets, 74715 bytes)
pkts bytes target prot opt in out source destination
587 23506 MASQUERADE all -- * vlan1 !1.1.1.1 0.0.0.0/0
4 908 MASQUERADE all -- * br0 172.16.22.0/24 172.16.22.0/24
0 0 SNAT all -- * vlan1:1 172.16.22.100 0.0.0.0/0 to:10.1.8.13

Chain OUTPUT (policy ACCEPT 1247 packets, 75623 bytes)
pkts bytes target prot opt in out source destination

Chain VSERVER (1 references)
pkts bytes target prot opt in out source destination

У меня есть ещё один алиас на интерфейсе vlan1 и через него идет маршрут, и адрес в который я хочу натить 172.16.22.100 на самом деле не реальный 1.1.1.2 а серый из подсети 10.1.8.0. Может быть изза него не получается и надо натить только в реальный айпишник

ifconfig vlan1:0 10.1.8.35 netmask 25.255.255.0 up
route add -net 10.1.0.0 netmask 255.255.0.0 gw 10.1.8.1 dev vlan1:0

Less
10-03-2009, 19:42
Добавте в файл /usr/local/sbin/post-firewall


iptables -t nat -I POSTROUTING 1 -s 172.16.22.100 -o vlan1:0 -j SNAT --to-source 10.1.8.13
iptables -t nat -I POSTROUTING 2 -s 172.16.22.0/24 -o vlan1:0 -j SNAT --to-source 1.1.1.1


Не забудьте выполнить flashfs save && flashfs commit && flashfs enable

iptables -t nat -I POSTROUTING 2 - правило будет №2 в таблице POSTROUTING.

Маскарад уберать не нужно (иначе вообще некуда пакеты уходить не будут, их будет дропать шлюз прова), необходимо просто добрать нашы правила перед маскарадом.

В правилах должен быть тот интерaейс с которого выходите (vlan1:0).

Поправте адреса ибо я запуталя :D

Power
10-03-2009, 21:34
iptables не понимает имена интерфейсов с двоеточием. Используйте просто vlan1.

RET
10-03-2009, 21:54
iptables не понимает имена интерфейсов с двоеточием. Используйте просто vlan1.
Да, действительно не понимает! Всё заработало как хотел и с одним только правилом

iptables -t nat -I POSTROUTING 1 -s 172.16.22.100 -o vlan1 -j SNAT --to-source 10.1.8.13
ну и плюс интерфейс vlan1:1 с ip 10.1.8.13 как я уже писал
Всем большое спасибо за помощь!

P.S. коробочка конечно классная, позволяет превратить любую больную фантазию в жизнь :D