나는 격리된 서브넷과 나머지 네트워크 사이의 게이트웨이로 Linux 시스템을 설정했습니다.
NAT는 iptables를 통해 수행되며 정상적으로 작동합니다.
# Generated by iptables-save v1.6.1 on Mon Nov 27 10:22:22 2017
*filter
:INPUT ACCEPT [14459:13422943]
:FORWARD DROP [323:21689]
:OUTPUT ACCEPT [9723:3273357]
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 10.112.0.0/16 -d 10.113.0.0/16 -i eth0 -o eth1 -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -s 10.113.0.0/16 -i eth1 -o tun0 -m conntrack --ctstate NEW -j ACCEPT
COMMIT
# Completed on Mon Nov 27 10:22:22 2017
# Generated by iptables-save v1.6.1 on Mon Nov 27 10:22:22 2017
*nat
:PREROUTING ACCEPT [795:105677]
:INPUT ACCEPT [20:3379]
:OUTPUT ACCEPT [12:777]
:POSTROUTING ACCEPT [12:777]
-A POSTROUTING -s 10.113.0.0/16 -o tun0 -j MASQUERADE
COMMIT
# Completed on Mon Nov 27 10:22:22 2017
모든 트래픽을 리디렉션하기 위해 openVPN 경로를 통해 연결하면 서버에서 푸시되고 이 역시 정상적으로 작동합니다.
0.0.0.0/1 via 10.211.1.142 dev tun0
default via 10.112.0.1 dev eth0 proto static
10.112.0.0/16 dev eth0 proto kernel scope link src 10.112.0.2
10.113.0.0/16 dev eth1 proto kernel scope link src 10.113.0.1
10.211.1.142 dev tun0 proto kernel scope link src 10.211.1.141
118.241.176.13 via 10.112.0.1 dev eth0
128.0.0.0/1 via 10.211.1.142 dev tun0
그러나 tun0 인터페이스를 통해 서브넷 10.113.0.0의 NAT 트래픽만 리디렉션하고 게이트웨이 자체가 (업데이트 등을 위해) 정상적인 인터넷 연결을 유지하도록 하고 싶습니다.
추가한다고 생각했는데루트 노풀내 openvpn.conf에 연결하면 iptable 규칙에 따라 트래픽이 tun0으로 리디렉션되므로 이 문제를 해결할 수 있지만 분명히 이것만으로는 충분하지 않습니다(서브넷 클라이언트가 인터넷에 연결할 수 없음).
간단한 IP 경로 항목이나 뭔가가 누락된 것 같습니다.