Вот правила, которые я вставил в iptables:

$ iptables -t nat -A PREROUTING 
                -i wlan0 -p tcp --dport 80 -j DNAT --to-destination 19.11.11.1:80
$ iptables -t nat -A POSTROUTING -j MASQUERADE

Но когда я (терминал) перечисляю их, я получаю пункт назначения 0.0.0.0/0 вместо 19.11.11.1 Точно:

Chain PREROUTING (policy ACCEPT 210 packets, 43762 bytes)
pkts bytes target prot opt in source destination 
0   0    DNAT tcp -- wlan0 * 0.0.0.0/0 0.0.0.0/0
    tcp dpt:80 to:19.11.11.1:80

Где я не прав? Спасибо.

Nota Bene: трафик поступает из подсети 19.11.11.0/24 до 19.11.11.1:80.

2 ответа2

2

В столбце destination указан IP-адрес назначения исходного пакета (до NAT), как указано в параметре -d или --destination . Поскольку вы не указали параметр назначения, запись соответствует всем TCP-пакетам, предназначенным для порта 80, на любом IP-адресе назначения.

1

Это выглядит правильно для меня - возможно, вы читаете вывод неправильно.

Источником и назначением (в пакете) TO MATCH является 0.0.0.0/0 0.0.0.0/0 - то есть все, что соответствует написанному правилу (вы не указали источник или назначение).

Действие над этим пакетом заключается в перенаправлении «на:19.11.11.1:80» - т.е. текст в следующей строке.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .