홈 서버와 원격 서버 사이의 VPN 터널을 통해 홈 LAN과 원격 LAN 사이를 라우팅하고 싶습니다. 설정은 다음과 같습니다.
_________________ _____________ __________________
________| |______ _________| |________ __________| |
| | | | | | | | | | |
Remote-LAN---| enp1s0 | remote-server | tun1 |---VPN-Tunnel---| uplink0 | home server | enp2s0 |---Home-LAN---| Ethernet | Windows Notebook |
|________| |______| |_________| |________| |__________| |
|_________________| |_____________| |__________________|
원격 서버
상호 작용
enp1s0: 192.168.178.10/24
tun1: 10.11.0.2/24
노선
default via 192.168.178.1 dev enp1s0 proto static
10.11.0.0/24 dev tun1 proto kernel scope link src 10.11.0.2
172.23.56.0/24 via 10.11.0.1 dev tun1
192.168.178.0/24 dev enp1s0 proto kernel scope link src 192.168.178.10
라우팅이 활성화되었습니다.
# cat /etc/sysctl.d/30-ipforward.conf
net.ipv4.ip_forward=1
방화벽
-A ufw-user-input -i tun1 -j ACCEPT
홈 서버
상호 작용
enp2s0: 172.23.56.2/24
uplink0: 10.11.0.1/24
노선
default via 172.23.56.254 dev enp2s0 proto static
10.11.0.0/24 dev uplink0 proto kernel scope link src 10.11.0.1
172.23.56.0/24 dev enp2s0 proto kernel scope link src 172.23.56.2
192.168.178.0/24 via 10.11.0.2 dev uplink0
라우팅 활성화됨
$ cat /etc/sysctl.d/routing.conf
net.ipv4.ip_forward = 1
방화벽
table inet filter {
chain input {
type filter hook input priority 0; policy accept;
ct state { established, related } accept
ct state invalid drop
iifname "lo" accept
ip protocol icmp accept
ip6 nexthdr ipv6-icmp accept
iifname "enp2s0" tcp dport ssh accept
tcp dport { http, https } accept
udp dport { openvpn, 1195 } accept
iifname "game0" jump game-vpn
reject
}
chain game-vpn {
tcp dport 25565 accept
}
chain forward {
type filter hook forward priority 0; policy accept;
ip saddr 172.23.56.0/24 ip daddr 192.168.178.0/24 accept
ip saddr 192.168.178.0/24 ip daddr 172.23.56.0/24 accept
drop
}
chain output {
type filter hook output priority 0; policy accept;
}
}
노트북(윈도우 10)
상호 작용
Ethernet: 172.23.56.20
노선
192.168.178.0 255.255.255.0 172.23.56.2 172.23.56.20 51
불행히도 내 노트북에서 원격 LAN으로 ping을 하면
ping 192.168.178.10
시간 초과가 발생합니다. 에코 요청이 전달되어 홈 서버의 VPN 인터페이스에 도달하는 것으로 보입니다.
$ sudo tcpdump -i uplink0 "host 172.23.56.20"
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on uplink0, link-type RAW (Raw IP), capture size 262144 bytes
21:03:56.651706 IP gamebook.fritz.box > 192.168.178.10: ICMP echo request, id 1, seq 265, length 40
21:04:01.284635 IP gamebook.fritz.box > 192.168.178.10: ICMP echo request, id 1, seq 266, length 40
21:04:06.289546 IP gamebook.fritz.box > 192.168.178.10: ICMP echo request, id 1, seq 267, length 40
그러나 원격 VPN 인터페이스에는 연결할 수 없습니다.
tcpdump -i tun1 "host 172.23.56.20"
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun1, link-type RAW (Raw IP), capture size 262144 bytes
<a whole lotta nothing>
내가 무엇을 놓치고 있나요? NAT를 사용하고 싶지 않고 일반 IPv4 라우팅만 사용하고 싶습니다.