ソース IP アドレスを維持しながら DNAT パケットを送信できません。

ソース IP アドレスを維持しながら DNAT パケットを送信できません。

私は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

ベストアンサー1

おすすめ記事