Следуя этому примеру:

sudo sysctl -w net.ipv4.conf.eth0.rp_filter=0
sudo sysctl -w net.ipv4.conf.tun0.rp_filter=0
sudo sysctl -w net.ipv4.conf.all.rp_filter=0
sudo sysctl -w net.ipv4.conf.default.rp_filter=0
sudo sysctl -w net.ipv4.conf.lo.rp_filter=0 

sudo sysctl -w net.ipv4.conf.all.forwarding=1
sudo sysctl -w net.ipv4.conf.default.forwarding=1
sudo sysctl -w net.ipv4.conf.eth0.forwarding=1
sudo sysctl -w net.ipv4.conf.lo.forwarding=1
sudo sysctl -w net.ipv4.conf.tun0.forwarding=1

sudo sysctl -w net.ipv6.conf.all.forwarding=1
sudo sysctl -w net.ipv6.conf.default.forwarding=1
sudo sysctl -w net.ipv6.conf.eth0.forwarding=1
sudo sysctl -w net.ipv6.conf.lo.forwarding=1
sudo sysctl -w net.ipv6.conf.tun0.forwarding=1

sudo sysctl -w net.ipv4.tcp_fwmark_accept=1

iptables -F
iptables -t mangle -F
iptables -t nat -F

ip route flush table 101
ip route flush cache

ip rule del fwmark 2 table 101
ip rule add fwmark 2 table 101

ip route add table 101 default via 192.168.0.1 dev eth0
ip route add table 101 192.168.0.0/24 dev eth0  proto kernel  scope link  src 192.168.0.102

iptables --table nat --append POSTROUTING -o eth0 -j MASQUERADE
iptables -t mangle -A PREROUTING -p tcp --dport 22 -j MARK --set-mark 2

Однако, когда я запускаю OpenVPN, а затем захожу на свой сервер с помощью ssh, а затем запускаюсь last , я вижу IP-адрес моей службы VPN, а не внешний IP-адрес.

Что мне не хватает?

ОС: Ubuntu 16.10

1 ответ1

1

Отвечая на мой собственный вопрос:

iptables -F
iptables -t mangle -F
iptables -t nat -F

echo 2 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 2 > /proc/sys/net/ipv4/conf/tun0/rp_filter
ip route flush table 101
ip rule add fwmark 2 table 101
ip route add default via 192.168.0.1 table 101
ip route flush cache

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t mangle -A OUTPUT -p tcp --dport 22    -j MARK --set-mark 2

Вкратце, ip route flush cache должен идти сразу после последней команды ip route add , а для iptables следует использовать цепочку OUTPUT вместо PREROUTING .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .