Основной интерфейс Ethernet моего сервера enp8s0
, имеет один общедоступный IP-адрес (116.202.221.254
- основной IP-адрес сервера), и вот как он настраивается.
# ip addr show enp8s0
2: enp8s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether a8:a1:59:06:e6:6c brd ff:ff:ff:ff:ff:ff
inet 116.202.221.254/26 brd 116.202.221.255 scope global enp8s0
valid_lft forever preferred_lft forever
inet6 2a01:4f8:241:55c1::2/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::aaa1:59ff:fe06:e66c/64 scope link
valid_lft forever preferred_lft forever
Маршрут:
# ip route show
default via 116.202.221.193 dev enp8s0 onlink
10.103.213.2 dev wg0 scope link
116.202.221.192/26 via 116.202.221.193 dev enp8s0
116.202.221.192/26 dev enp8s0 proto kernel scope link src 116.202.221.254
Содержание файла: /etc/network/interfaces
auto lo
iface lo inet loopback
iface lo inet6 loopback
auto enp8s0
iface enp8s0 inet static
address 116.202.221.254
netmask 255.255.255.192
gateway 116.202.221.193
# route 116.202.221.192/26 via 116.202.221.193
up route add -net 116.202.221.192 netmask 255.255.255.192 gw 116.202.221.193 dev enp8s0
iface enp8s0 inet6 static
address 2a01:4f8:241:55c1::2
netmask 64
gateway fe80::1
Затем я запросил дополнительный публичный IP-адрес (116.202.221.202
) для моего сервера, и вот как я его настроил.
Добавьте дополнительный IP-адрес к основному интерфейсу / устройству enp8s0
:
# ip address add 116.202.221.202/32 dev enp8s0
Добавьте эти строки в конфигурацию enp8s0
в /etc/network/interfaces
:
up ip address add 116.202.221.202/32 dev enp8s0
down ip address del 116.202.221.202/32 dev enp8s0
Примените изменения с немедленным вступлением в силу:
# ip address flush enp8s0 && systemctl restart networking
Весь интернет-трафик, исходящий с сервера, похоже, идет через основной IP-адрес. 116.202.221.254
. Так, например, если я просматриваю Интернет через сервер, мой IP-адрес будет отображаться как 116.202.221.254
.
Поэтому, даже если я настрою свои инструменты на использование дополнительного / вторичного IP-адреса 116.202.221.202
они, кажется, выходят из 116.202.221.254
.
Как мне настроить мой сервер так, чтобы два IP-адреса обрабатывались индивидуально (не были связаны, как сейчас) и имели отдельные маршруты?
У меня есть сайт на сервере, использующий основной IP-адрес 116.202.221.254
.
Я пытаюсь настроить WireGuard VPN на сервере (для защиты моей личности и преодоления цензуры) для использования вторичного IP-адреса 116.202.221.202
но вместо этого после настройки и настройки я все еще смотрю в Интернет как 116.202.221.254
.
Как настроить сервер так, чтобы моя VPN использовала 116.202.221.202
вместо?
(Для большего контекста. Я последовал этому руководству: https://www.linode.com/docs/networking/vpn/set-up-wireguard-vpn-on-debian/)
Конфигурация сервера WireGuard: /etc/wireguard/wg0.conf
[Interface]
PrivateKey = SERVER_PRIVATE_KEY
Address = 10.103.213.1/32
ListenPort = 51208
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o enp8s0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o enp8s0 -j MASQUERADE
SaveConfig = false
# Macbook Pro
[Peer]
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = 10.103.213.2/32
Конфигурация клиента WireGuard: /etc/wireguard/wg0.conf
[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.103.213.2/32
ListenPort = 51208
DNS = 8.8.8.8, 8.8.4.4, 1.1.1.1
[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = 116.202.221.202:51208
AllowedIPs = 0.0.0.0/0
Что мне не хватает? Как это исправить?
Я изо всех сил старался понять каждый шаг, но это все еще много, и я знаю, что упускаю что-то, связанное с iptables
маршруты или правила. Но соответствующую информацию в Интернете очень сложно проанализировать, учитывая мои текущие знания, и я не смог найти решение, несмотря на то, что работал над этим в течение 2 дней.
Любая помощь приветствуется. Пожалуйста, постарайтесь дать как можно более подробную информацию. Спасибо!
Если само приложение не указывает системе, через какой IP-адрес должен проходить исходящий трафик, сервер будет использовать IP-адрес по умолчанию (основной) - по крайней мере, в моем понимании.
И поскольку похоже, что в WireGuard нет настройки, чтобы указать ему использовать определенный общедоступный IP-адрес, нам нужно полагаться на iptables
или ip route
.
Добрая душа на #wireguard
Канал IRC помог мне с PostUp
и PostDown
ценности в wg0.conf
конфигурация сервера, которая выполнит то, что мне нужно.
PostUp = iptables -t nat -A POSTROUTING -m mark --mark 0xCA6C/0xFFFFFFFF -j SNAT --to-source 116.202.221.202; iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -s 10.103.213.0/24 -o enp8s0 -j SNAT --to-source 116.202.221.202
Post Down = iptables -t nat -D POSTROUTING -m mark --mark 0xCA6C/0xFFFFFFFF -j SNAT --to-source 116.202.221.202; iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -s 10.103.213.0/24 -o enp8s0 -j SNAT --to-source 116.202.221.202
Это тоже работает, но НЕ ИДЕАЛЬНО, как мне сказали ( --mark
в приведенных выше командах может нацеливаться на трафик, специфичный для WG, в то время как они зависят от исходного IP-адреса - по крайней мере, так я это понял):
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -s 10.103.213.0/24 -o enp8s0 -j SNAT --to-source 116.202.221.202; iptables -A FORWARD -o wg0 -j ACCEPT
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -s 10.103.213.0/24 -o enp8s0 -j SNAT --to-source 116.202.221.202; iptables -D FORWARD -o wg0 -j ACCEPT