Lio*_*nel 5 ubuntu router iptables
我使用本教程将 linux box 设置为路由器:https : //help.ubuntu.com/community/Router
那台机器上有 2 个网络接口和一个 VPN:eth0 是主要的 Internet 接口,eno1 是内联网,tun0 是 VPN 接口。
根据教程,我使用下面的脚本通过 vpn 路由来自 eno1 的所有内容:
iptables-restore <<-EOF
*nat
-A POSTROUTING -o tun0 -j MASQUERADE
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A FORWARD -i tun0 -o eno1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i eno1 -o tun0 -j ACCEPT
-A FORWARD -j LOG
COMMIT
EOF
Run Code Online (Sandbox Code Playgroud)
这很好用。但现在我想通过 eth0 路由来自 eno1 且目标 IP 为 203.205.147.173 的所有数据包。
我应该将什么样的 iptables 规则添加到我的脚本中?
编辑
我已将脚本更改如下以将所有数据包标记为 203.205.147.173:
iptables-restore <<-EOF
*nat
-A POSTROUTING -o tun0 -j MASQUERADE
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A FORWARD -i tun0 -o eno1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i eno1 -o tun0 -j ACCEPT
-A FORWARD -j LOG
COMMIT
*mangle
-A PREROUTING -i "$INTIF" -d 203.205.0.0/16 -j MARK --set-mark 0x15
COMMIT
EOF
Run Code Online (Sandbox Code Playgroud)
然后我创建表X:
sudo nano /etc/iproute2/rt_tables,然后1 tableX在文件末尾添加。
然后添加规则和路由:
sudo ip rule add fwmark 0x15 lookup tableX
sudo ip route add default via 192.168.5.1 dev eth0 table tableX
sudo ip route add 203.205.0.0/16 via 192.168.5.1 dev eth0 table tableX
Run Code Online (Sandbox Code Playgroud)
但traceroute 203.205.147.173超时:
traceroute to 203.205.147.173 (203.205.147.173), 64 hops max, 52 byte packets
(192.168.8.1) 2.384 ms 1.060 ms 1.027 ms
2 * * *
3 * * *
4 * * *
5 * * *
6 * * *
7 * * *
8 * * *
Run Code Online (Sandbox Code Playgroud)
我想我没有向 tableX 添加正确的路线。关于如何初始化 tableX 的任何建议?
请注意,eth0 路由器 ip 为 192.168.5.1,而 eno1 路由器 ip 为 192.168.8.1
您需要添加一行,例如:
-A FORWARD -i eno1 -o eth0 -d 203.205.147.173 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
您可能需要将其添加到LOG规则之前。
| 归档时间: |
|
| 查看次数: |
12451 次 |
| 最近记录: |