首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过两个接口进行路由

问通过两个接口进行路由
EN

Unix & Linux用户
提问于 2020-12-04 10:36:58
回答 1查看 79关注 0票数 1

带有Ubuntu20.04LTS的KVM虚拟化的VPS A

VPN服务器: 10.29.0.0/24

带有Ubuntu 20.04 LTS的KVM虚拟化的VPS B

来自VPS A的VPN客户端: 10.29.0.19

VPN服务器: 10.8.0.0/24

我不控制VPS A,因为VPN服务器允许VPN客户端之间的通信。

在VPS本身的命令行中,我可以在VPS A上平VPN服务器的所有客户端。

代码语言:javascript
复制
root@vpsB:~# ping 10.29.0.1
PING 10.29.0.1 (10.29.0.1) 56(84) bytes of data.
64 bytes from 10.29.0.1: icmp_seq=1 ttl=64 time=3.09 ms
64 bytes from 10.29.0.1: icmp_seq=2 ttl=64 time=3.10 ms
^C
--- 10.29.0.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 3.091/3.094/3.097/0.003 ms
root@vpsB:~# ping 10.29.0.5
PING 10.29.0.5 (10.29.0.5) 56(84) bytes of data.
64 bytes from 10.29.0.5: icmp_seq=1 ttl=64 time=59.8 ms
64 bytes from 10.29.0.5: icmp_seq=2 ttl=64 time=60.0 ms
^C
--- 10.29.0.5 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 59.761/59.877/59.994/0.116 ms
代码语言:javascript
复制
root@vpsB:~# ip address show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever

       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:00:3c:a2:85:61 brd ff:ff:ff:ff:ff:ff
    inet 217.XXX.XXX.111/24 brd 217.XXX.XXX.255 scope global eth0
       valid_lft forever preferred_lft forever
    
3: tun1: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
    link/none
    inet 10.8.0.1/24 brd 10.8.0.255 scope global tun1
       valid_lft forever preferred_lft forever
    
4: tun3: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
    link/none
    inet 10.29.0.19/24 brd 10.29.0.255 scope global tun3
代码语言:javascript
复制
root@vpsB:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         217.XXX.XXX.1   0.0.0.0         UG    0      0        0 eth0
10.8.0.0        0.0.0.0         255.255.255.0   U     0      0        0 tun1
10.29.0.0       0.0.0.0         255.255.255.0   U     0      0        0 tun3
217.XXX.XXX.0   0.0.0.0         255.255.255.0   U     0      0        0 eth0
代码语言:javascript
复制
root@vpsB:~# iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -p udp -m udp --dport 1194 -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 10.8.0.0/24 -j ACCEPT

从10.8.0.0/24到10.29.0.0/24,我需要做些什么?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2020-12-04 15:04:12

iptables规则是从上到下处理的。从VPS-B (您拥有的),您已经有现有的NAT规则,您必须重新安排。要重新排列NAT规则,必须将现有规则复制到文本编辑器,然后删除现有规则。然后按照正确的顺序重新添加NAT规则。

程序是这样的:

查看现有NAT链规则(删除前):

代码语言:javascript
复制
sudo iptables -t nat -L -n --line-numbers

将规则保存到文本编辑器

删除现有的NAT规则:

代码语言:javascript
复制
sudo iptables -t nat -D POSTROUTING 1

重复上面的命令,直到所有NAT规则被删除。然后重新加入NAT规则。

确保以下规则优先执行(然后NAT规则的其余部分将遵循):

代码语言:javascript
复制
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -d 10.29.0.0/24 -o tun3 -j MASQUERADE

确保规则的顺序正确:

代码语言:javascript
复制
sudo iptables -t nat -L -n --line-numbers

VPS B已经在互连10.8.0.0/24和10.29.0.0/24,因此在此服务器上不需要进一步的路由语句。

从使用VPS-B作为VPN服务器的VPN客户端,告诉他们使用VPN服务器(10.8.0.1)作为子网10.29.0.0/24的下一跳。

代码语言:javascript
复制
sudo ip route add 10.29.0.0/24 via 10.8.0.1

如果一切正常,请考虑在VPS服务器上保存iptables规则。指南是这里

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/622873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档