У меня есть два адаптера на сервере.

Ради этого примера давайте назовем их ad1 и ad2.

 ad1, ip = xxx.xxx.x.x (internet connection)
 ad2, ip = 192.168.1.1 (this system is the gameway for 192.168.1.5)

Мне нужно перенаправить соединения, поступающие на ad1 порт 1234 на ip на ad2, который является 192.168.1.5 на порт 1238 .

Мне нужно знать, как это сделать как для UDP, так и для TCP, но в отдельных командах, так как иногда мне нужно будет пересылать UDP, а иногда - TCP.

Я довольно новичок в использовании iptables, поэтому просто ищу помощь.

1 ответ1

0

Спасибо amauk на Reddit за этот ответ. Подумал, что я также опубликую это здесь на тот случай, если кто-нибудь столкнется с этим вопросом.

Во-первых, вам нужно включить IP-пересылку.
По умолчанию это отключено по соображениям безопасности.

vim /etc/sysctl.conf
net.ipv4.ip_forward = 1

Затем выполните следующее, чтобы зафиксировать изменения и перезагрузить конфигурацию sysctl.

sysctl -p

Затем вам нужно написать правила IPTables для пересылки соединений.

TCP

iptables -t nat -A PREROUTING -i ad1 -p tcp -m tcp --dport 1234 -j DNAT --to-destination 192.168.1.5:1238

UDP

iptables -t nat -A PREROUTING -i ad1 -p udp --dport 1234 -j DNAT --to-destination 192.168.1.5:1238

Пакеты, поступающие с интерфейса ad1 -i ad1 соответствующие критериям (TCP/UDP + номер порта), NAT к месту назначения: порт

Вам также нужно как-то сохранить правила IPTables и восстановить их при загрузке.
Как именно это сделать, зависит от дистрибутива.

редактировать
Для удаления правил используйте -D (удалить) вместо -A (добавить)

Например.
Чтобы удалить правило пересылки TCP

iptables -t nat -D PREROUTING -i ad1 -p tcp -m tcp --dport 1234 -j DNAT --to-destination 192.168.1.5:1238

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