В продолжение моего предыдущего
вопроса имеем такую ситуёвину:
Имеется два сервака на бубунтах 22. Оба имеют внешний айпишники, и соединены в локальную сеть посредством ZeroTier. Нужно прокинуть порт 25566 с шлюза, на порт 25566 игровой тачки, при этом сохранив исходный айпишник клиента.
В предыдущем вопросе мне скинули
статью, и полагаю это то, что нужно.
На втором серваке надо настроить policy routing, чтобы пакеты с интерфейса ZeroTier возвращались на него же, а пакеты с внешнего eno1 соответственно обратно в интернет, и тогда я смогу отключить маскарадинг на шлюзе, чтобы передавался реальный айпишник клиента
На второй машине написал вот такое:
ip route add default via 192.168.0.2 dev eno1 table 101
ip route add default via 10.147.17.92 dev ztcfwzuixs table 102
ip rule add from all iif eno1 lookup 101
ip rule add from all iif ztcfwzuixs lookup 102
Вывод ip route
default via 192.168.0.1 dev eno1
10.147.17.0/24 dev ztcfwzuixs proto kernel scope link src 10.147.17.92
192.168.0.0/24 dev eno1 proto kernel scope link src 192.168.0.2
Вывод ip rule
0: from all lookup local
32764: from all iif ztcfwzuixs lookup 102
32765: from all iif eno1 lookup 101
32766: from all lookup main
32767: from all lookup default
И собственно ничего не поменялось. Подключение через шлюз работает только с маскарадингом на шлюзе, и соответственно второй сервак видит айпишник шлюза, что в целом ожидаемо.
Что я упустил? Нужно как-то дополнительно маркировать пакеты? Неправильно написал конфигурацию ip route?
Ну и продублирую конфиг из прошлого вопроса:
Машина 1 - шлюз:
IP внешний - 144.144.144.144
Внешний интерфейс - ens3
IP локальный 10.147.17.22
Интерфейс локальный ztcfwzuixs
Машина 2 - игровой сервак
IP внешний - 133.133.133.133
Внешний интерфейс - eno1
IP локальный 10.147.17.92
Интерфейс локальный ztcfwzuixs
Конфиг nftables на шлюзе
table ip nat {
chain PREROUTING {
type nat hook prerouting priority 0; policy accept;
tcp dport 25566 dnat to 10.147.17.92:25566
udp dport 25566 dnat to 10.147.17.92:25566
}
chain POSTROUTING {
type nat hook postrouting priority 100;
oif "ztcfwzuixs" counter masquerade
}
chain OUTPUT {
type nat hook output priority 0; policy accept;
}
}
table ip filter {
chain INPUT {
type filter hook input priority 0; policy accept;
}
chain FORWARD {
type filter hook forward priority 0; policy accept;
}
}