Итак, у меня есть сервер VPS и Dedi, на которых работает Debian 9.9.
139.99.x.x: VPS
139.89.x.x: DEDI
Сервер Dedi запускает игровой сервер, но не может быть доступен напрямую, я хочу сначала направить весь трафик через мой VPS (obv, чтобы замаскировать IP-адрес игрового сервера).
Я хочу сделать это с помощью туннеля GRE. Итак, на деди я сделал:
ip tunnel add gre1 mode gre remote 139.99.x.x local 139.89.x.x ttl 255
ip link set gre1 up
ip addr add 10.10.10.1/24 dev gre1
На VPS:
ip tunnel add gre1 mode gre remote 139.89.x.x local 139.99.x.x ttl 255
ip link set gre1 up
ip addr add 10.10.10.2/24 dev gre1
Это работает, я могу пинговать в обоих направлениях. Я также включил переадресацию ip в sysctl.conf.
Теперь я хочу, чтобы внешний трафик, попадающий на VPS на 139.99.x.x: 27015, проходил через туннель и достигал 10.10.0.1:27015 на DEDI.
Итак, моя попытка была такой, которую я получил из другого вопроса здесь, на VPS:
iptables -t nat -A PREROUTING -p tcp -m tcp -m multiport -d 139.99.x.x --dports 27015 -j DNAT --to-destination 10.10.10.1
iptables -t nat -A POSTROUTING -o gre1 -p tcp -m tcp -m multiport -d 10.10.10.1 --dports 27015 -j SNAT --to-source 10.10.10.2
Кто-нибудь может предоставить мне рабочий пример?
Спасибо!
Ваша настройка верна, и все должно работать. При возникновении любых проблем вы должны использовать следующие шаги для устранения проблем:
Проверьте счетчики правил iptables в таблице nat с помощью iptables-save -c -t nat
команда. Счетчики правил должны быть ненулевыми. Порядок правил важен, если у вас есть другие правила в таблице nat.
Если счетчики равны нулю, запустите tcpdump
для обеспечения входящего трафика.
Кроме того, вы должны разрешить пересылку пакетов в брандмауэре. Универсальное правило, как это делать: iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED,DNAT -j ACCEPT
.
Запустите tcpdump на сервере DEDI (tcpdump -ni gre1
) для обеспечения перенаправления пакетов от VPS.
На VPS вы должны разрешить входящие пакеты: iptables -A INPUT -i gre1 -p tcp --dport 27015
.
P.S. Убедитесь, что ваш игровой сервер использует протокол tcp. В большинстве игр используется udp, потому что он больше всего подходит для игр.