Кто-нибудь знает, как перенаправить входящий порт на другой порт для адреса IPv6 в OpenWRT?
Никакого NAT, только обычный глобальный адрес IPv6.
Я пытаюсь изменить порт SSH для нескольких серверов, перенаправив произвольный номер порта на 22 внутри. При этом для локальной сети оставив порт 22.
Например, [2345::1]:5000 -> OpenWRT -> [2345::1]:22
При использовании эквивалентного IPv4 NAT эта конфигурация очень проста, поскольку порты можно легко настроить с помощью переадресации портов.
Большое спасибо
решение1
Вы можете использовать тот же DNAT-based port forwarding в Linux ip6tables. Главное отличие в том, что вам не нужноизменятьадрес назначения; с другой стороны, вам нужносоответствоватьпо существующему адресу.
-t nat -I PREROUTING -d 2345::1 -p tcp --dport 5000 -j DNAT --to-destination [2345::1]:22
Конечно, при использовании IPv6 вам не нужен маскарадинг на основе SNAT, но это изначально совершенно отдельное правило брандмауэра, поэтому его можно просто опустить.
Я не знаю, как это переводится в OpenWRT (за исключением того, что вам может понадобиться пакет kmod-ipt-nat6
), но подозреваю, что это что-то вроде:
config redirect
option family ipv6
option src wan6
option src_dip 2345::1
option proto tcp
option src_dport 5000
option target DNAT
option dest_ip 2345::1
option dest_port 22
решение2
Похоже, в настоящее время невозможно использовать «config redirect» для IPv6 в брандмауэре OpenWRT 3.
Однако мне удалось добиться этого вручную, используя следующие правила:
ip6tables -t nat -I PREROUTING -d IPV6_ADDRESS_HERE -p tcp --dport 5000 -j DNAT --to-destination [IPV6_ADDRESS_HERE]:22 ip6tables -A zone_wan_input -m conntrack --ctstate DNAT -j ACCEPT ip6tables -A zone_wan_forward -m conntrack --ctstate DNAT -j zone_(ZONE_NAME)_dest_ACCEPT