На прошлой неделе я без особого успеха пытался защитить сервер от атак DOS, используя туннель GRE от VPS к выделенной машине.
Визуальный:
User --> VPS --> Dedicated Server
Я следил за несколькими руководствами КУПИТЬ и Защита Minecraft от DDOS и модифицировал его по мере необходимости.
ip_gre
ip_nat_pptp
ip_conntrack_pptp
Кроме того, на обеих машинах включена переадресация портов ipv4.
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)
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)
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.