私は2台のDebianコンピュータを持っています。1つはプロキシに設定され、もう1つはルータに設定されています。ルーターと呼びます。私の目標は、DNATパケットがProxy1のWANからOpenVPNトンネルを介してルーターに移動することです。ルーターとプロキシ1はどちらもインターネットにアクセスでき、異なるWAN IPを持ち、別々のシステムです。
Proxy1 には次の規則があります。
iptables -t nat -A PREROUTING -m tcp -p tcp --dport 80 -j DNAT --to-destination 10.0.0.2:80
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
ip route add 10.0.0.2/32 dev tun0
Proxy1とルータで「tcpdump -s 0 -w tcpdump.log -i any」を実行すると、パケットがWANから来ていることがわかります。
この問題の最も奇妙なことは、MASQUERADEルールを次のように変更することです。
iptables -t nat -A POSTROUTING j MASQUERADE
その後、DNATが適用され、パケットがルータに表示されます。ただし、マスカレーディングはパケットの送信元アドレスを変更するため、ルータは最終送信元 IP を認識できません。ソース アドレスが 10.0.1.2 に変更された場合、パケットがルータに到達しますが、ソース アドレスが維持されている場合、パケットがルータに到達しない理由は理解できません。
代理人情報:
Debian GNU/Linux 8 (提示)
カーネルバージョン: Linux 3.16.0-4-amd64 x86_64
プロキシIP:202.89.75.110
Proxy1で「ip Route get 10.0.0.2」を実行すると、次のものが返されます。
10.0.0.2 dev tun0 src 10.0.1.2
cache
Proxy1で「ip link; ip -4 address; ip -4 Route; ip -4 rule」を実行した結果:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 00:16:3c:95:70:75 brd ff:ff:ff:ff:ff:ff
5: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN mode DEFAULT group default qlen 100
link/none
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet x.x.x.x/25 brd x.x.x.127 scope global eth0
valid_lft forever preferred_lft forever
5: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
inet 10.0.1.2/29 brd 10.0.1.7 scope global tun0
valid_lft forever preferred_lft forever
default via x.x.x.1 dev eth0
10.0.0.2 dev tun0 scope link
10.0.1.0/29 dev tun0 proto kernel scope link src 10.0.1.2
x.x.x.0/25 dev eth0 proto kernel scope link src x.x.x.x
0: from all lookup local
32765: from all fwmark 0x65 lookup 101
32766: from all lookup main
32767: from all lookup default
ルータに関する情報は次のとおりです。
Debian GNU/Linux 10(スポイラー)
カーネルバージョン: Linux 4.19.0-6-amd64 x86_64
ルーターIP:71.115.98.227
ルータで「ip link; ip -4 address; ip -4 Route; ip -4rule」を実行した結果:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 70:85:c2:d5:84:96 brd ff:ff:ff:ff:ff:ff
3: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 70:85:c2:d5:84:94 brd ff:ff:ff:ff:ff:ff
4: tun1: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN mode DEFAULT group default qlen 100
link/none
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
inet 10.0.0.1/24 brd 10.0.0.255 scope global enp2s0
valid_lft forever preferred_lft forever
3: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 71.115.98.227/21 brd 71.115.105.255 scope global dynamic eno1
valid_lft 38916sec preferred_lft 38916sec
4: tun1: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
inet 10.0.1.1/29 brd 10.0.1.7 scope global tun1
valid_lft forever preferred_lft forever
default via 71.115.98.1 dev eno1
10.0.0.0/24 dev enp2s0 proto kernel scope link src 10.0.0.1
10.0.1.0/29 dev tun1 proto kernel scope link src 10.0.1.1
71.115.98.0/21 dev eno1 proto kernel scope link src 71.115.98.227
0: from all lookup local
32765: from all fwmark 0x65 lookup 101
32766: from all lookup main
32767: from all lookup default
ルータの「ipルートリストテーブル101」の出力:
default via 10.0.1.2 dev tun1
ルータには、これらのパケットをサーバに送信する次の規則があります。
iptables -t nat -A PREROUTING -m tcp -p tcp --dport 80 -j DNAT --to-destination 10.0.0.2:80
iptables -P FORWARD ACCEPT
10.0.0.2 のサーバはルータの LAN にあります。ルータで転送をイネーブルにします。ルータはLANのゲートウェイです。
cat /proc/sys/net/ipv4/ip_forward
1を返す
新しい openvpn サーバー構成は次のとおりです。
dev tun1
port 1194
proto udp4
ifconfig 10.0.1.1 10.0.1.2
secret static_p1.key
Proxy1 の新しい openvpn クライアント構成は次のとおりです。
remote 71.115.98.227 1194 udp
dev tun0
ifconfig 10.0.1.2 10.0.1.1
script-security 2
route-up /etc/openvpn/proxyroute.sh
secret static_p1.key