LINUX.ORG.RU
ФорумAdmin

Wireguard туннель (Вопрос в пробросе портов и получение IP)

 ,


1

1

Здравствуйте. Имеется три вопроса.

Первый вопрос:
У меня имеется домашний сервер, который находится за NAT.
Есть VDS сервер с внешним IP адресом (123.123.123.123).
Стоит WireGuard туннель между серверами. VDS сервер имеет IP 10.66.66.1 а домашний сервер 10.66.66.2
Хочу спросить, правильно ли я настроил iptables чтобы при обращении на внешний ip трафик свободно ходил к серверу за NAT туда и обратно? Или нужно что-то добавить?

Использую такие правила:
iptables -t nat -A PREROUTING -d 123.123.123.123 -p tcp -m multiport –dports 1338,8083,80,443,3306 -j DNAT –to-dest 10.66.66.2
iptables -t nat -A PREROUTING -d 123.123.123.123 -p udp -m multiport –dports 1338,8083,80,443,3306 -j DNAT –to-dest 10.66.66.2
iptables -t nat -A POSTROUTING -s 10.66.66.2 -j MASQUERADE

Правда почему-то MASQUERADE в итоге прописано два, убрать возможно какой нужно?
root@vds:~# iptables -t nat -L POSTROUTING –line-numbers Chain POSTROUTING (policy ACCEPT)
num target prot opt source destination
1 MASQUERADE all – 10.66.66.2 anywhere
2 MASQUERADE all – anywhere anywhere

Второй вопрос:
На домашнем сервере стоит веб сервер (HestiaCP) и когда клиент заходит на сайт его IP определяется как 10.66.66.2, что я сделал не так?
Что возможно поменять, чтобы отображался именно IP клиента?

Третий вопрос:
Читал в интернете, что нужно добавлять еще такие правила:
iptables -t nat -A POSTROUTING -s 10.66.66.2 -p tcp -m multiport –sports 1338,8083,80,443,3306 -j SNAT –to-source 123.123.123.123
iptables -t nat -A POSTROUTING -s 10.66.66.2 -p udp -m multiport –sports 1338,8083,80,443,3306 -j SNAT –to-source 123.123.123.123
Их так же нужно добавлять или нет? Так как к примеру в проблеме с получением IP адреса клиента они мне не помогли.
Буду благодарен за ответы.



Последнее исправление: carambarass (всего исправлений: 8)

MASQUERADE

В твоем случае лучше юзать SNAT, так как изначально айпишник известен.

Правда почему-то MASQUERADE

Ищи где и что в твоем дистрибе добавляет дефолтное правило MASQUERADE all – anywhere anywhere.

чтобы отображался именно IP клиента?

Чтоб айпишник клиента отображался корректно, нужно выбросить шаманизм с DNAT, поднять на VPS nginx и заворачивать клиентов через proxy_pass http://10.66.66.2. И на сайте айпишник клиента бзать из хедера X-Forwarded-For.

Читал в интернете, что нужно добавлять еще такие правила

Можно, вместо правила с MASQUERADE выше, обойтись одним:
iptables -t nat -A POSTROUTING -s 10.66.66.2 -p tcp -m tcp -j SNAT --to-source 123.123.123.123

iron ★★★★★
()
Ответ на: комментарий от iron

Спасибо за ответ. PREROUTING как я понял корректно указал?

MASQUERADE all – anywhere anywhere не знаю, что добавляет его, возможно сам wireguard, но я так полагаю он ни на что не влияет в данном случае и может быть?

По поводу отображения IP клиента на веб сервере, возможно ли как-то его получить без nginx на VDS? Просто к примеру игровой сервер получает IP клиента нормально, проблема только с веб сервером.

Я ведь правильно понимаю, что SNAT настраивается на том же сервере, что и DNAT? Потому что у меня почему-то это не сработало с указанием портов, только с этими правилами заработало:
iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.66.66.2 -p tcp -j SNAT –to-source 123.123.123.123 iptables -t nat -A POSTROUTING -s 10.66.66.2 -p tcp -m tcp -j SNAT –to-source 123.123.123.123 Что лучше все таки из этого использовать? Нужно ли в SNAT указывать порты каким-то образом?

Хотел бы еще спросить, возможно ли как-то связаться с Вами, чтобы уточнить то, что не совсем понятно, чтобы не засорять в теме?

carambarass
() автор топика