Iptables forward
Недавно замострячил чУдную вещь:
iptables -t nat -A PREROUTING -p tcp -s 10.130.15.248/29 -d 10.130.6.100 - -dport 80 -j DNAT - -to-destination 10.130.6.2
iptables -t nat -A POSTROUTING -p tcp -s 10.130.15.248/29 -d 10.130.6.2 -j SNAT - -to-source 10.130.6.100
- делаем перенаправление от конкретного source’a на совсем другой сервер. (Веб, в данном случае).
Первая строка меняет destination приходящего пакета на совсем какой-то другой.
Вторая строка подменяет source отправляемого пакету на адрес моего сервера. Т.е удалённый сервер воспринимает в качестве клиента мой сервер.
Ну а на моём сервере выполняется только транзит.
Само собой, в Chain FORWARD где нужно — ACCEPT.
И, конечно, не забыть включить форвардинг в ядре, если он включен не был:
sysctl net.ipv4.conf.all.forwarding=1
Смотрим:
root@serverok:~$ sysctl -a | grep forward
net.ipv4.ip_forward = 1
error: permission denied on key ‘net.ipv4.route.flush’
net.ipv4.conf.all.forwarding = 1
net.ipv4.conf.all.mc_forwarding = 0
net.ipv4.conf.default.forwarding = 1
net.ipv4.conf.default.mc_forwarding = 0
net.ipv4.conf.lo.forwarding = 1
net.ipv4.conf.lo.mc_forwarding = 0
net.ipv4.conf.eth0.forwarding = 1
net.ipv4.conf.eth0.mc_forwarding = 0
net.ipv4.conf.eth1.forwarding = 1
net.ipv4.conf.eth1.mc_forwarding = 0
Посмотреть, какие наты получились, можно так:
root@serverok:/$ iptables -t nat -nvL —line
Chain PREROUTING
num pkts bytes target prot opt in out source destination
1 5 300 DNAT tcp — * * 10.130.15.248/29 10.130.6.100 tcp dpt:80 to:10.130.6.2Chain POSTROUTING
num pkts bytes target prot opt in out source destination
1 0 0 SNAT tcp — * * 10.130.15.248/29 10.130.6.2 to:10.130.6.100
Пример примитивный, но по факту, клиент обращается по старому адресу, а попадает на сервер, который мне нужен ;-)
Popularity: 3%
Этот материал находится на сайте http://compiling.ru
Оставьте свой отзыв