IPTables /路由和多接口配置

时间:2012-07-27 18:49:54

标签: interface routes iptables gateway

我就是这个场景,一个运行多个网卡的Debian盒子:

  1. eth0 - 通过本地路由器进行Internet连接(172.20.1.x,255.255.255.0)
  2. ppp0 - 拨号到没有互联网的网络(10.x.x.x,255.255.255.255)
  3. tun0 - 虚拟OpenVPN Tun接口(172.50.1.x,255.255.255.255)
  4. 我的目标是允许客户端通过ppp0连接到VPN并将其互联网流量转发到eth0。

    现在,客户端可以连接到VPN,他们可以通过eth0 172.20.1.1到达路由器,但他们无法访问谷歌或互联网上的任何其他地方。 (不,这不是DNS问题。我尝试过IP)

    如何设置iptables / route以允许此操作?

    我认为这个问题与路由有关,因为在debian机器上我可以ping并访问路由器(172.20.1.1),但我没有上网功能。

    root@shv1:~# ping 172.20.1.1
    PING 172.20.1.1 (172.20.1.1) 56(84) bytes of data.
    64 bytes from 172.20.1.1: icmp_req=1 ttl=64 time=0.416 ms
    64 bytes from 172.20.1.1: icmp_req=2 ttl=64 time=0.428 ms
    ^C
    --- 172.20.1.1 ping statistics ---
    2 packets transmitted, 2 received, 0% packet loss, time 1001ms
    rtt min/avg/max/mdev = 0.416/0.422/0.428/0.006 ms
    root@shv1:~# ping google.com
    PING google.com (173.194.34.197) 56(84) bytes of data.
    ^C
    --- google.com ping statistics ---
    4 packets transmitted, 0 received, 100% packet loss, time 3003ms
    
    root@shv1:~# ping 173.194.34.197
    PING 173.194.34.197 (173.194.34.197) 56(84) bytes of data.
    ^C
    --- 173.194.34.197 ping statistics ---
    3 packets transmitted, 0 received, 100% packet loss, time 2004ms
    

    我还尝试使用以下命令将默认网关更改为路由器IP(172.20.1.1):

    route add default gw 172.20.1.1 eth0
    

    现在我可以访问互联网,但客户端无法通过拨号连接(ppp0)连接或ping我的机器。

    谢谢!

1 个答案:

答案 0 :(得分:0)

所以......我设法解决了这个问题:

route add default gw 172.20.1.1 eth0
route add -net 10.0.0.0 netmask 255.0.0.0 ppp0

这会在eth0及其路由器上设置我的默认网关,并为10.x.x.x网络添加新路由。

这样我就可以通过ppp0拨号进入互联网了。