네트워크 네임스페이스에서 실행되는 서비스가 있고 이를 외부 세계에 노출하는 iptables 규칙이 거의 없습니다.
다음 명령은 내 설정의 예입니다.
sudo ip netns add ns1
sudo ip link add veth1_ type veth peer name veth1
sudo ip link set veth1_ netns ns1
sudo ip netns exec ns1 ifconfig veth1_ 192.168.0.2/24 up
sudo ifconfig veth1 192.168.0.1/24 up
sudo iptables -P FORWARD ACCEPT
sudo iptables -t nat -A POSTROUTING -o veth1 -j MASQUERADE
sudo iptables -t nat -A PREROUTING -p tcp -m tcp --dport 50000 -j DNAT --to-destination 192.168.0.2:8000
sudo ip netns exec ns1 netcat -l 8000
:50000 포트를 통해 서비스에 액세스할 수 있으므로 지금까지는 문제가 없습니다.
또한 이 네트워크 네임스페이스에서 시작되어 특수 인터페이스를 통해 특정 IP 주소로 전송되는 패킷을 라우팅해야 하며 이를 위해 소스 라우팅 정책을 사용합니다.
sudo ip route add 172.23.23.23 via X.X.X.X table 1000
sudo ip rule add from 192.168.0.2 iif veth1 to 172.23.23.23 lookup 1000
호스트 172.23.23.23에서 서비스에 액세스하려고 하면 다른 호스트에서는 작동하지만 작동하지 않습니다.
내 질문은 이 소스 기반 정책 라우팅이 트래픽에 영향을 미치는 이유는 무엇입니까? veth1으로 들어오는 패킷은 가장되므로 답변이 이러한 규칙과 일치해서는 안 됩니다. 내 추론이 잘못된 걸까요?
감사해요,