Назад | Перейти на главную страницу

Multicraft: перенаправление портов через туннель GRE

На прошлой неделе я без особого успеха пытался защитить сервер от атак DOS, используя туннель GRE от VPS к выделенной машине.

Визуальный:

User --> VPS --> Dedicated Server

Я следил за несколькими руководствами КУПИТЬ и Защита Minecraft от DDOS и модифицировал его по мере необходимости.

Что я уже сделал:

На обеих машинах загружены следующие модули ядра

ip_gre
ip_nat_pptp
ip_conntrack_pptp

Кроме того, на обеих машинах включена переадресация портов ipv4.

Настройка GRE на выделенном компьютере:

ip tunnel add veridian mode gre remote VPS_EXTERN_IP local DEDICATED_EXTERN_IP ttl 255
ip link set veridian up
ip addr add 10.10.10.1/24 dev veridian

Это создает интерфейс:

veridian  Link encap:UNSPEC  HWaddr 3F-8D-F2-FA-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.10.10.1  P-t-P:10.10.10.1  Mask:255.255.255.0
          inet6 addr: fe80::200:5efe:3f8d:f2fa/64 Scope:Link
          UP POINTOPOINT RUNNING NOARP  MTU:1476  Metric:1
          RX packets:4016 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3970 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:338404 (338.4 KB)  TX bytes:359357 (359.3 KB)

Настройка GRE на VPS

ip tunnel add gre1 mode gre remote DEDICATED_EXTERN_IP local VPS_EXTERN_IP ttl 255
ip link set gre1 up
ip addr add 10.10.10.2/24 dev gre1

Это создает интерфейс:

gre1      Link encap:UNSPEC  HWaddr 68-83-98-C8-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.10.10.2  P-t-P:10.10.10.2  Mask:255.255.255.0
          inet6 addr: fe80::200:5efe:6883:98c8/64 Scope:Link
          UP POINTOPOINT RUNNING NOARP  MTU:1476  Metric:1
          RX packets:3743 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3811 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:314188 (314.1 KB)  TX bytes:335587 (335.5 KB)

Добавление IP-адреса интерфейса VPS в таблицу исходных маршрутов на выделенном сервере:

echo '100 VERIDIAN' >> /etc/iproute2/rt_tables
ip rule add from 10.10.10.0/24 table VERIDIAN
ip route add default via 10.10.10.2 table VERIDIAN

Что работает

Отсюда я могу успешно пропинговать выделенный сервер с VPS.

ping 10.10.10.1

и наоборот

ping 10.10.10.2

Кроме того, когда я настраиваю запись NAT на VPS

iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -j SNAT --to-source VPS_EXTERN_IP

Я могу успешно получить внешний IP-адрес VPS с выделенного сервера, запустив:

curl http://www.cpanel.net/showip.cgi --interface 10.10.10.1

Что не работает - переадресация портов

На VPS я сейчас запускаю:

iptables -t nat -A PREROUTING -p tcp -d VPS_EXTERN_IP --dport 25565 -j DNAT --to-destination 10.10.10.1:25565

iptables -A FORWARD -p tcp -d 10.10.10.1 --dport 25565 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

Теперь я безуспешно пытаюсь подключиться к игровому серверу через внешний IP-адрес VPS.

Я борюсь с этим больше недели, любая помощь будет очень признательна.

Обновить

Все выше правильно.

Еще немного отладки, и я обнаружил, что демон-оболочка (Multicraft) для игрового сервера блокирует соединения localhost, когда для экземпляра игры установлен внешний IP-адрес.

Решение состоит в том, чтобы установить IP-адрес на 0.0.0.0, и переадресация портов работает отлично.

Поскольку я не вижу этого в показанной вами документации, я предполагаю, что вы забыли включить переадресацию IP.

Выполните следующую команду, чтобы убедиться, что это действительно так:

sysctl net.ipv4.ip_forward

Если переадресация IP действительно отключена, вы должны увидеть:

net.ipv4.ip_forward = 0

Если это ваша проблема, запустите:

sysctl -w net.ipv4.ip_forward=1

Возможно, ваша проблема в том, что порты не открыты / брандмауэры блокируют порты.
Вы можете легко проверить это со своего VPS на выделенном компьютере с помощью nmap:

nmap -A 10.10.10.2/24 -p 25565

И с клиентской машины на машину с внешним доступом таким же образом, но замените 10.10.10.2 с вашим внешним адресом VPS.