Почему правило IP не применяется на вашем Linux VPS? Решение проблемы.

Подключение игровых серверов через туннель IPIP: руководство и решение проблем

В современных сетевых архитектурах использование виртуальных частных серверов (VPS) становится все более популярным, особенно в области игровых приложений. В этой статье мы рассмотрим процесс подключения игрового сервера и прокси-сервера через туннель IPIP, а также некоторые проблемы, которые могут возникнуть в процессе настройки.

Настройка туннеля между VPS

Я использую два VPS: один служит игровым сервером, а другой — прокси. Для соединения этих серверов я настроил туннель IPIP с использованием протокола Fou. Трафик теперь проходит через данный туннель, что обеспечивает дополнительную безопасность и возможность использования разных сетей в дальнейшем.

Для настройки туннеля на прокси-сервере я выполнил следующие команды:

firewall-cmd --add-interface=tunnel1 --zone=trusted --permanent
firewall-cmd --add-masquerade --zone=public --permanent
firewall-cmd --zone=public --add-port=42011/udp --permanent
firewall-cmd --zone=public --add-port=16261-16262/udp --permanent
firewall-cmd --permanent --direct --add-rule ipv4 nat PREROUTING 0 -p udp -i eth0 --dport 16261:16262 -j DNAT --to-destination 192.168.1.2
firewall-cmd --permanent --direct --add-rule ipv4 nat PREROUTING 0 -p tcp -i eth0 --dport 16261:16262 -j DNAT --to-destination 192.168.1.2
sysctl -w net.ipv4.ip_forward=1
modprobe fou
ip fou add port 42011 ipproto 4
modprobe ipip
ip link add name tunnel1 type ipip remote <remote VPS public IP> local <local VPS public IP> ttl 225 encap fou encap-sport 42011 encap-dport 42011
ip addr add 192.168.1.1/30 dev tunnel1
ip link set tunnel1 up

На игровом сервере я применил аналогичную конфигурацию, создав следующие правила:

firewall-cmd --add-interface=tunnel1 --zone=trusted --permanent
firewall-cmd --zone=public --add-port=42011/udp --permanent
firewall-cmd --zone=public --add-port=16261-16262/udp --permanent
firewall-cmd --permanent --direct --add-rule ipv4 mangle PREROUTING 0 -i eth0 -m conntrack --ctstate NEW -j MARK --set-mark 10
firewall-cmd --permanent --direct --add-rule ipv4 mangle PREROUTING 1 -m mark --mark 10 -j CONNMARK --save-mark
firewall-cmd --permanent --direct --add-rule ipv4 mangle OUTPUT 0 -j CONNMARK --restore-mark
ip route add default via <local VPS public gateway> dev eth0 proto static metric 100 table eth0
ip rule add to <remote VPS public IP>/32 table eth0
ip rule add fwmark 10 table eth0
modprobe fou
ip fou add port 42011 ipproto 4
modprobe ipip
ip link add name tunnel1 type ipip remote <remote VPS public IP> local <local VPS public IP> ttl 225 encap fou encap-sport 42011 encap-dport 42011
ip addr add 192.168.1.2/30 dev tunnel1
ip link set tunnel1 up
ip route delete default via <local VPS public gateway>
ip route add default via 192.168.1.2 dev tunnel1 metric 100

Проблемы с UDP-трафиком

Несмотря на корректную настройку, у меня возникла проблема: UDP-трафик выходил из интерфейса tunnel1 вместо eth0, как это предполагалось согласно правилам IP. После выполнения команды для проверки соединений было замечено, что клиент UDP успешно получает сигнал, и он помечается как 10, однако это не решает проблему с маршрутизацией.

Для проверки текущих правил IP на игровом сервере я использовал следующую команду:

ip rule

Вот текущие правила, которые отображаются:

0:      from all lookup local
32761:  from all fwmark 0xa lookup eth0
32762:  from 192.168.1.2 lookup tunnel1
32764:  from all to <proxy public ip> lookup eth0
32766:  from all lookup main
32767:  from all lookup default

Tcp и UDP: различия в обработке

Одна из особенностей, с которой я столкнулся, заключается в том, что проблема с маршрутизацией касалась только UDP-трафика, в то время как TCP-трафик обрабатывался без проблем. Я также заметил, что при изменении правил для других протоколов, таких как ICMP, они работали должным образом, в то время как аналогичные изменения для UDP не оказали никакого эффекта.

В заключение

Сетевые настройки, особенно при использовании виртуальных серверов и туннелей, могут быть сложными. Важно тщательно следить за конфигурацией правил и учитывать особенности работы различных протоколов. Если у вас возникают подобные проблемы, стоит обратить внимание на используемые правила и методы обработки UDP-трафика, так как они могут отличаться от TCP.

Источник

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *