オフィス用にIPSEC/XL2TPD VPNのセットアップを行おうとしていますが、VPNに接続した後、リモートローカルマシンにアクセスする際に問題が発生します。
VPNを介して接続でき、インターネットサイトを閲覧できますが、前述のように、ローカルサイトに接続したり、pingを実行したりすることはできません。
私のネットワーク設定は次のようなものです。
インターネット> eth0>ルーター/ VPN> eth2> LAN
VPNの背後にあるいくつかのtracerouteは次のとおりです。
traceroute to google.com (173.194.78.94), 64 Hops max, 52 byte packets
1 192.168.1.80 (192.168.1.80) 74.738 ms 71.476 ms 70.123 ms
2 10.35.192.1 (10.35.192.1) 77.832 ms 77.578 ms 77.865 ms
3 10.47.243.137 (10.47.243.137) 78.837 ms 85.409 ms 76.032 ms
4 10.47.242.129 (10.47.242.129) 78.069 ms 80.054 ms 77.778 ms
5 10.254.4.2 (10.254.4.2) 86.174 ms
10.254.4.6 (10.254.4.6) 85.687 ms
10.254.4.2 (10.254.4.2) 85.664 ms
traceroute to 192.168.1.3 (192.168.1.3), 64 Hops max, 52 byte packets
1 * * *
2 *traceroute: sendto: No route to Host
traceroute: wrote 192.168.1.3 52 chars, ret=-1
*traceroute: sendto: Host is down
traceroute: wrote 192.168.1.3 52 chars, ret=-1
*
traceroute: sendto: Host is down
3 traceroute: wrote 192.168.1.3 52 chars, ret=-1
*traceroute: sendto: Host is down
traceroute: wrote 192.168.1.3 52 chars, ret=-1
これらは私のiptablesルールです:
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# allow lan to router traffic
iptables -A INPUT -s 192.168.1.0/24 -i eth2 -j ACCEPT
# ssh
iptables -A INPUT -p tcp --dport ssh -j ACCEPT
# vpn
iptables -A INPUT -p 50 -j ACCEPT
iptables -A INPUT -p ah -j ACCEPT
iptables -A INPUT -p udp --dport 500 -j ACCEPT
iptables -A INPUT -p udp --dport 4500 -j ACCEPT
iptables -A INPUT -p udp --dport 1701 -j ACCEPT
# dns
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -p udp --dport 53 -j ACCEPT
iptables -t nat -A POSTROUTING -j MASQUERADE
# logging
iptables -I INPUT 5 -m limit --limit 1/min -j LOG --log-prefix "iptables denied: " --log-level 7
# block all other traffic
iptables -A INPUT -j DROP
そして、ここにいくつかのファイアウォールログラインがあります:
Dec 6 11:11:57 router kernel: [8725820.003323] iptables denied: IN=ppp0 OUT= MAC= SRC=192.168.1.81 DST=192.168.1.3 LEN=60 TOS=0x00 PREC=0x00 TTL=255 ID=62174 PROTO=UDP SPT=61910 DPT=53 LEN=40
Dec 6 11:12:29 router kernel: [8725852.035826] iptables denied: IN=ppp0 OUT= MAC= SRC=192.168.1.81 DST=224.0.0.1 LEN=44 TOS=0x00 PREC=0x00 TTL=1 ID=15344 PROTO=UDP SPT=56329 DPT=8612 LEN=24
Dec 6 11:12:36 router kernel: [8725859.121606] iptables denied: IN=ppp0 OUT= MAC= SRC=192.168.1.81 DST=224.0.0.1 LEN=44 TOS=0x00 PREC=0x00 TTL=1 ID=11767 PROTO=UDP SPT=63962 DPT=8612 LEN=24
Dec 6 11:12:44 router kernel: [8725866.203656] iptables denied: IN=ppp0 OUT= MAC= SRC=192.168.1.81 DST=224.0.0.1 LEN=44 TOS=0x00 PREC=0x00 TTL=1 ID=11679 PROTO=UDP SPT=57101 DPT=8612 LEN=24
Dec 6 11:12:51 router kernel: [8725873.285979] iptables denied: IN=ppp0 OUT= MAC= SRC=192.168.1.81 DST=224.0.0.1 LEN=44 TOS=0x00 PREC=0x00 TTL=1 ID=39165 PROTO=UDP SPT=62625 DPT=8612 LEN=24
問題はiptablesに関連しているはずですが、さまざまなconfを試した後、適切なconfを見つけることができませんでした。
どんな助けでも大歓迎です;)。よろしく、サイモン。
編集:
これは私のルートテーブルです:
default 62.43.193.33.st 0.0.0.0 UG 100 0 0 eth0
62.43.193.32 * 255.255.255.224 U 0 0 0 eth0
192.168.1.0 * 255.255.255.0 U 0 0 0 eth2
192.168.1.81 * 255.255.255.255 UH 0 0 0 ppp0
これとまったく同じ問題が発生している可能性が非常に高いです post
あなたの状況は次のとおりです。
VPNクライアントはVPNサーバーに到達し、VPNを介してインターネットにトンネリングできますが、サーバーLANや他のVPNクライアントに到達することはできません。
Iptables NATルールがあるため、インターネットへのトンネリングは機能します。残りは、VPNサーバーで次のを適用する必要があります::
tcp/ip転送を有効にする
Linux TCP/IPスタックは、デフォルトではパケットを転送しません(インターフェース間またはIPネットワーク間での再ルーティング)。有効にする必要があります
echo 1 > /proc/sys/net/ipv4/ip_forward
これがないと、VPNサーバーはVPNクライアントパケットをローカルで受け入れ、NATルールに従ってクライアントパケットをルーティングしますが、トラフィックをローカルネットワークにルーティングしません。
Iptables
Iptablesは、デフォルトですべてのトラフィックをブロックします。トラフィックが通過(転送)できるようにするためのルールが必要です。
$IPTABLES -A FORWARD -s 192.168.1.0/24 -d 192.168.1.0/24 -j ACCEPT
PS:各VPN接続は個別の(仮想)インターフェイス(nic)であり、パケットがそれらの間を流れる/ルーティングできるようにするには、[〜#〜] forward [〜#〜]iptablesで。
/ etc/l2tpd.conf
VPNクライアントが互いに通信する必要がある場合、VPNサーバーはルーティングポイントとして機能しており、同じネットワーク上にある必要があります。
local ip 192.168.1.1
ip range 192.168.1.2 - 192.168.1.254
ネットワークの設定に応じて上記を変更してください。 VPNサーバーに192.168.1.xIPがある場合は、それを「ローカルIP」に使用します。
変更されたIptablesスクリプト
VPNサーバーに物理的にアクセスできない場合は十分に注意してください。
(このスクリプトは、WANインターフェイスでのなりすまし防止が必要ですが、VPNからLAN 1へのトラフィックの取得に焦点を当てることができます。)
# Reset/Flush iptables
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
# Enable IP forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
# NAT
# -- iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
#
# Updated NAT rule
# External interface = eth0
# External IP = 123.123.123.123
# Internal LAN = 192.168.1.0/24
# To support dynamic interface : "-j SNAT" replace "-j MASQUERADE"
# NO NAT if destination is LAN
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 ! -d 192.168.1.0/24 -j SNAT --to-source 123.123.123.123
# New(1) - lo
# -- iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i lo -m state --state NEW -j ACCEPT
iptables -A OUTPUT -o lo -m state --state NEW -j ACCEPT
# -- iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# New(2) Allow inter-192.168.1.x routing
iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -s 192.168.1.0/24 -m state --state NEW -j ACCEPT
iptables -A FORWARD -s 192.168.1.0/24 -m state --state NEW -j ACCEPT
# -- allow lan to router traffic - Shadowed by New(2)
# -- This rule maybe your source of trouble too, it only accept 192.168.1.x from eth2
# -- iptables -A INPUT -s 192.168.1.0/24 -i eth2 -j ACCEPT
# ssh
iptables -A INPUT -p tcp --dport ssh -j ACCEPT
# vpn
iptables -A INPUT -p 50 -j ACCEPT
iptables -A INPUT -p ah -j ACCEPT
iptables -A INPUT -p udp --dport 500 -j ACCEPT
iptables -A INPUT -p udp --dport 4500 -j ACCEPT
iptables -A INPUT -p udp --dport 1701 -j ACCEPT
# dns - Shadowed by New(2)
# -- iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 53 -j ACCEPT
# -- iptables -A INPUT -s 192.168.1.0/24 -p udp --dport 53 -j ACCEPT
# logging
iptables -I INPUT 5 -m limit --limit 1/min -j LOG --log-prefix "iptables denied: " --log-level 7
# block all other traffic
iptables -A INPUT -j DROP
うーん、部分的な答えは次のようになります:iptables -A OUTPUT -p tcp --dport dns -j ACCEPT
...説明の「-AINPUT」をミラーリングするのと同様のステートメント
わかりました、私は最初にこれに気づいたはずです:あなたはNATそう...
iptables -A FORWARD -i eth1 -o ppp0 -j ACCEPT
iptables -A FORWARD -o eth1 -i ppp0 -j ACCEPT
sysctl -w net.ipv4.ip_forward = 1
iptables -A FORWARD -i ppp0 -o eth1 -p tcp --dport 80 -d x.x.x.x -j ACCEPT
iptables -A FORWARD -i ppp0 -o eth1 -p tcp --dport 53 -d y.y.y.y -j ACCEPT
iptables -t filter -P FORWARD DROP